Below you will find pages that utilize the taxonomy term “java”
Sep, 2024 - Event
TW Spotlight: Going with the Flow – My Journey
Thoughtworks has always amazed me—whether it’s the pioneering work we do in the industry or the contributions we make to software engineering practices. What truly inspires me is our people-centered approach. Recently, I was honored by our market leadership, who put me in the spotlight to share my journey with fellow Thoughtworkers. While I’ve learned a great deal from my colleagues, I took this opportunity to share my own experiences in the hope of inspiring others.
read more
Jul, 2024 - Post
20 reflections of 20 years
On July 5, 2004, I embarked on my professional journey. These past 20 years have been nothing short of adventurous and fulfilling.
“Learning is a natural process, and it matures by sharing”
I’ve had a wealth of learnings throughout these two decades, as I worked on over 50 projects spanning various domains and technologies. I’ve had the privilege of directly working with over a thousand individuals from diverse backgrounds across different organizations.
read more
Mar, 2021 - About
Certificates
Building AI Elements of AI Product Management Enterprise Architecture Internet of Things (IOT) User Experience Design Taradata Certified Java Certified Programmer
read more
Feb, 2019 - Post
Lessons Learned From Blockchain-Based Development
Blockchain or DLT (Distributed Ledger Technology) is getting good traction in the IT world these days. Earlier, this technology was being mostly explored by banks and other finance-related institutions, such as Bitcoin and Ethereum. Now, it is getting explored for other use cases for building distributed applications. Blockchain technology comes with a decentralized and immutable data structure that maintains a connected block of information. Each block is connected using a hash of the previous block, and every new block on the chain is validated (mined) before adding and replicating it.
read more
Oct, 2018 - Post
Request Tracing Using Nginx and Spring Boot
Most web applications are hosted behind a load balancer or web-server such as Nginx/HTTPD, which intercepts all the requests and directs dynamic content requests to the application server, such as Tomcat. Correlating requests traversing from the front-end server to the backend servers are general requirements. In this post, we will discuss tracing the request in the simplest way in an Nginx and Spring Boot-based application without using an external heavyweight library like Slueth.
read more
Aug, 2018 - Post
A Quick Catch up Before Java 11
Java 11’s release candidate is already here, and the industry is still roaming around Java 8. Every six months, we will see a new release. It is good that Java is evolving at a fast speed to catch up the challengers, but at the same time, it is also scary to catch its speed, even the Java ecosystem (build tools, IDE, etc.) is not catching up that fast. It feels like we are losing track.
read more
Jul, 2018 - Post
5 Hard Lessons From Microservices Development
Microservices-based development is happening all around the industry; more than 70% are trying development of microservice-based software. Microservices simplify integration of the businesses, processes, technology, and people by breaking down the big-bang monolith problem to a smaller set that can be handled independently. However, it also comes with the problem of managing relations between these smaller sets. We used to manage fewer independent units, so there was less operation and planning effort.
read more
Jan, 2018 - Post
Apache Spark on Windows
This article is for the Java developer who wants to learn Apache Spark but don’t know much of Linux, Python, Scala, R, and Hadoop. Around 50% of developers are using Microsoft Windows environment for development, and they don’t need to change their development environment to learn Spark. This is the first article of a series, “Apache Spark on Windows”, which covers a step-by-step guide to start the Apache Spark application on Windows environment with challenges faced and thier resolutions.
read more
Jul, 2015 - Post
Choose ORM carefully!
We have recently migrated source code from Hibernate ORM to JDBC (Spring JDBC template) based implementation. Performance has been improved 10 times.
User case (Oracle 11g, JBoss 6, JDK 6, Hibernate, Spring 3) : A tree structure in database is getting populated from a deep file system (directory structure) having around 75000 nodes. Each node (directory) contains text files, which get parsed based on business rules and then populate the database ( BRANCHs representing a node, tables referring to branch, tree_nodes).
read more
Dec, 2014 - Post
HashMap Performance Improvement in Java 8
Hash collision degrades the performance of HashMap significantly. Java 8 has introduced a new strategy to deal with hash collisions, thus improving the performance of HashMaps. Considering this improvement in Java 8 for hash collisions, existing applications can expect performance improvements in case they are using HashMaps having large number of elements by simply upgrading to Java 8.
Earlier, when multiple keys ends up in the same bucket, then values along with their keys are placed in a linked list.
read more
Dec, 2014 - Post
Introduction to Java Lambda Expression
After Java 8, developers can apply functional programming constructs in a pure Object-Oriented programming language through lambda expressions. Using lambda expression sequential and parallel execution can be achieved by passing behavior into methods. In Java world lambdas can be thought of as an anonymous method with a more compact syntax. Here compact means it is not mandatory to specify access modifiers, return type and parameter types while defining the expression.
read more
Dec, 2014 - Post
Introduction to Java Stream API
Prior to JDK 8, collections can only be managed through iterators with the use of for, foreach or while loops. It means that we instruct a computer to execute the algorithm steps.
int sum(List<Integer> list) { Iterator<Integer> intIterator = list.iterator(); int sum = 0; while (intIterator.hasNext()) { int number = intIterator.next(); if (number > 5) { sum += number; } } return sum; } The above approach has the following tailbacks:
read more
Oct, 2014 - Event
Contributor - JavaOne - Rapid Modernization to Java8
Presented At: G. Venkat, Senior Vice President of Technology & Solutions, at Nagarro and I have spoken at the Oracle OpenWorld / JavaOne conference on Wednesday, October 1, 2014, form 10:00 – 11:00 a.m., Pacific Time, at Ballroom 6 in the Hilton San Francisco at Union Square.
I have supported Venkat and presented the JMod tool demo with him.
Here are some coverages - https://www.nagarro.com/en/news-events/nagarro-has-java-8-covered-at-oracle-open-world I have lead the Nagarro Stall and showcased the JMod demo to 300+ visitors.
read more
Feb, 2014 - Post
HTTP Router with Apache Camel
This article explains the http integration using Apache Camel. Create a configurable router to any http URL having place holders.
Prerequisite Windows7, Eclipse Juno Java 1.7 Creating HTTP Router Please follow below steps to generate POC for HTTP routing using apache camel.
Create Sample Camel Example Create eclipse project using archetype “camel-archetype-spring”
mvn archetype:generate DarchetypeGroupId=com.tk.poc.camel -DarchetypeArtifactId=camel-archetype-spring -DarchetypeVersion=2.11.0 -DarchetypeRepository=https://repository.apache.org/content/groups/snapshots-group Create following Java file
read more
Dec, 2013 - Post
Apache Camel SSH Component
This article is about troubleshooting issues we have faced while using apache camel’s SSH routes. It also covers step wise guide to setup apache camel routes.
Prerequisites Windows7 Eclipse Juno Java 1.7 Problem Statement We were getting following issues in the logs when connecting to one of the SSH server using Apache Camel-SSH. This was happening in one of the instance in production environment.
Here are few logs :
read more
May, 2013 - Post
Groovy - Getting Started
This article help you start with Groovy, with step by step guide and series of examples. It starts with an overview and then covers in detail examples.
Groovy Overview Groovy is an Object Oriented Scripting Language which provides Dynamic, Easy-to-use and Integration capabilities to the Java Virtual Machine. It absorbs most of the syntax from Java and it is much powerful in terms of functionalities which is manifested in the form Closures, Dynamic Typing, Builders etc.
read more
May, 2013 - Post
Scala - Getting Started - Part 2
In previous article we learned basics of Scala, in this articles we will learn how to setup build scripts for scala and build applications using scala.
We will also learn few web development frameworks for Scala and compare them with similar framework in Java.
Building Scala Applications Below program demonstrates the use of Scala script with Maven, Ant, and logging library – LogBack.
Integration with Ant Below example shows how Scala project can be built by the ant build.
read more
May, 2013 - Post
Scala - Getting Started - Part 1
This article help you to start with Scala, with step by step guide and series of examples. It starts with an overview and then covers in detail examples. In later articles, I will write about feature comparison with other languages. It article is helpful for people coming from Java background, how it is not the prerequisites.
Scala Overview Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way.
read more
Feb, 2013 - Post
Charset configuration in JVM
This article describes how to configure charset for a JVM.
We faced an issue on a Linux environment, a file containing some Swedish character was not being read correctly by underlying JVM since the default charset of JVM was picked as UTF-8 (which does not support some Swedish character). But on the other hand, in Windows environment, it was working fine since the default charset was picked as Windows-1252 (which does support these characters).
read more
Sep, 2012 - Post
Working with Embedded OLE Objects in Java
Document introduction contains a proof of concept for the research done on reading and writing OLE objects in Java. This research has been done using Apache POI. Please go thru the references for information about apache POI.
This article covers a POC to fetch OLE objects from RIF formatted XML. Not just that, we need to store them in a in some viewable format.
For a given XML in RIF format, parse it and read the embedded OLE object and represent in some viewable format using Java.
read more
May, 2012 - Post
Strange JSP Compilation Issue
We were getting following error on the production sever (Linux, Jboss). We were in the middle of user acceptance testing with the client, many users were accessing the application to simulate various scenarios in a live session.
the application was crashing just after 2-3 minute of start with above error, and no user were able to access the application. We were expected for fix the issue ASAP, as the users were assembled for the web session, all were waiting for the server up.
read more
Apr, 2012 - Post
Default Timezone in Java and MySQL
On one of our production environments, we had an issue our application related to time, specially modified time and creation time of the entities. It was quite random in nature for some entities.
We suspected that there might be issue in the timezone configuration.
Analysing the problem On production environment, we had limited permissions. We were not allowed to change system timezone. We noticed that Jboss is automatically picking the system timezone “Europe/Berlin” (which was configured from root user) and if we check the timezone for the linux user for which we have access it shows GMT time.
read more
Mar, 2012 - Post
Rule Engine - Getting Started with Drools
This article let you start with Rule Engine Drools, with step by step guide and series of examples. It starts with an overview and then covers in detail examples.
Rule Engine Overview The underlying idea of a rule engine is to externalize the business or application logic. A rule engine can be viewed as a sophisticated interpreter of if-then statements. The if-then statements are the rules. A rule is composed of two parts, a condition and an action: When the condition is met, the action is executed.
read more
Feb, 2012 - Post
Compiling Java Native C/C++ Code
We have faced multiple issues while compiling a native c/c++ code and using it with JNI in our Java application
How to write a JNI program. jni_md.h not found. Incompatible data types. On widows cygwin1.dll is required when running Java code on the native library. and more. Actually we were compiling NLP Solver’s native library (IPOPT) on windows 32 bit and on 64bit linux machine.
Solving the chaos! Here are the steps we have followed to solve the above issues:
read more
Jan, 2012 - Post
Using Apache CFX and Apache Camel in ESB
In the previous article, we learned about ESB and deployed our first OSGi bundle on FuseESB.
In this article, we will learn how to build Apache CXF and Apache Camel component and deploy them on FuseESB.
Lets understand what are these components :
Apache Camel ™ Powerful open source integration framework based on known Enterprise Integration Patterns with powerful Bean Integration.
Camel lets you create the Enterprise Integration Patterns to implement routing and mediation rules in either a Java based Domain Specific Language (or Fluent API), via Spring or Blueprint based Xml Configuration files or via the Scala DSL.
read more
Jan, 2012 - Post
Managing Calendar and Invites in Java
Calendars are used to store formation for various events. Calendar viewer displays the month-date view and for each day displays the events/reminders information.
Invites are the events in the form of email. Once the invite for an event sent to a user via email then that event will be stored in the calendar view and same can be seen in the day information of the calendar view.
Calendars Calendar data can be stored in files; there are some standard formats for storing calendars iCalendar is a computer file format which allows Internet users to send meeting requests and tasks to other Internet users, via email, or sharing files with an extension of .
read more
Jan, 2012 - Post
Working with Enterprise Service Bus
This article starts from basic terms of ESB worlds and then provides details of the FuseESB with various examples.
It contains step by step guide to install FuseESB, and develop and deploy OSGi bundle on FuseESB.
Lets understand terminologies of the ESB world :
ESB An Enterprise Service Bus (ESB) is a software architecture model used for designing and implementing the interaction and communication between mutually interacting software applications in Service Oriented Architecture.
read more
Jan, 2012 - Post
Mail Merge in Java
MailMerge is a process to create personalized letters and pre-addressed envelopes or mailing labels for mass mailings from a word processing document (Template). A template contains placeholders (Fields) along with the actual content. The placeholders are filled by the data source which is typically a spreadsheet or a database having column for each place holders.
This article talks about the java approach for generating multiple documents from a single MS Word template.
read more
Jan, 2012 - Post
Font configuration in JVM
Last year we have migrated one of our application from Java 5 to Java 6. The Java 6(OpenJDK) installation was done by client on a fresh system. After installing our application (under JBoss app), we found the fonts on JFreeCharts and on the images generated from AWT were not correct.
We have solved the issue by configuring the fonts at JVM level. Let understand it better.
How AWT / JFreeCharts shows the fonts AWT rely on native fonts, it usages default Java fonts (which best fits) if no native fonts mapping found.
read more