Technology is moving fast and so does Java technology. Java programming has completely changed in past decade. Millions of applications are developed using Java every day. Java is still one of the most popular programming languages among developers and employers.
Since oracle acquired Sun Microsystems, there has been a significant change in the language. As a competent java developer, you need to stay on top of the latest trends and features to stay productive.
I am a full-time java developer dealing with multiple applications in java. This article is based on my experience and interaction with other experienced developers in java technology.
In this article, I have tried to cover java feature highlight, interesting libraries, frameworks and open source projects along with some career path options for new java developers.
If you think I have missed out on something in this article please feel free to suggest it in comments. I will try to update the article to make it useful for our huge java developers community on the internet.
I have been writing about java related technology for almost 10 years and most of the things are same in java technology. However, to learn java related latest technology any developer need to keep up with latest trends. The most important changes are as part of latest features in Java language itself and before you proceed, make sure you have the best laptop for programming to ensure you can work as efficiently as possible.
Popular New Features In Java
Recent versions of Java have introduced very powerful features. Some of my favorite features are listed below
Lambda Expressions: Since Java 8
Lambda expressions in java are a way to achieve functional programming style code. These are good for some specific type of problems.
Default and Static Methods In Interfaces
Default methods are a powerful feature in java interfaces. This allows architects to redesign systems easily. Now you can easily add one more method to an existing interface without invalidating all implementing classes of it.
Static methods can be now added to a java interface. This can avoid an explosion of utility classes in your project.
Performance Improvements In Java 8
PermGen Space is Removed
The PermGen space has been removed from Java 8 memory model. It has been replaced with an expandable metaspace to store JVM metadata in native memory.
Garbage Collection : G1 Collector
The G1 (Garbage-first collector) was introduced in JDK 7. It has been designed support larger heap size requirements of applications. Though this new Garbage collector is available in Java it is still not the default garbage collector. It may become the default collector in Java 9
Asynchronous IO vs Multi-Threaded IO in Java
Java development is moving towards asynchronous IO. The latest recommended way to do IO in Java is using java.nio library. However, the programming using java.nio is still fairly complex. Therefore many developers prefer open source frameworks like netty
Despite the availability of features and frameworks, asynchronous IO is still painful in java. Current abstractions are not easy enough to be used by inexperienced developers. This causes a lot of unwanted performance and code maintenance issues.
Asynchronous IO is one of the strong reasons why many experienced web developers like Node.js – it is simple to do async IO in Node and it does it very well.
Interesting Libraries and Frameworks
Big Data Technology in Java
Java is still the leading language for big data analytics and map-reduce development. The two key open source projects to learn big data technology are listed below
Hadoop is still leading framework in big data computing technology. Map reduce development in java is very popular due to good support from apache.
Apache Spark is very popular big data computing framework that can run on top of Hadoop, Hbase, Mesos or Cassandra. It is used due to faster development and better performance. It supports Java and many existing java developers like to use it for writing efficient MapReduce jobs.
A large number of applications are now being developed using various NOSQL databases. The choice of database varies based on the needs of the project, however, some of the below listed NOSQL databases are reasonably popular now.
MongoDB is leading open source NOSQL database. It is popular due to its performance, JSON storage and other benefits of scaling. It is extremely easy to integrate. Therefore many java developers are quickly adopting it for REST web service development with JSON data input and output.
Couchbase is an enterprise licensed NOSQL database. It is popular for extremely fast response time.
Despite a lot of buzz around NOSQL databases, a relational database is still being used for a large number of applications. Some of the popular relational databases are listed below.
Based on Github projects, MySQL database is the most popular choice for Java open source projects. Below snapshot shows the popularity of Postgres SQL database on Github open source projects.
Postgres SQL Database
Postgres relational database is also very popular open source relational database. This database is very popular among PHP open source community. It is also commonly used for Java-based open source projects. Below snapshot shows the popularity of Postgres SQL database on Github open source projects.
Oracle is still the most popular enterprise relational database choice. This is not free however enterprise customers still rely heavily on it. Oracle is not as popular as MySQL and Postgres in open source community for obvious reasons. See the below snapshot of oracle usage in Github java projects.
Popular JSON Libraries in Java
JSON is the most popular format for REST based web service development. This is not different for Java technology either.
Google GSON is the most popular open source JSON library as of now. This is based on a number of open source projects on Github.
The second most popular option for JSON parsing in java is Jackson.
There are two leading functional programming languages that run on JVM These languages are being used by developers who like functional programming style.
Scala is an acronym of “Scalable language”. It is a functional as well as object oriented language. It runs inside a JVM. It has inbuilt support to use java libraries. This makes it a powerful scripting language. I like to use it for test automation and load testing.
Groovy is developed by Apache foundation. It is optionally typed and dynamic language. Many developers like to use groovy for scripting and automation.
Java Developer Career Paths
Java programming has been used for multiple types of projects. I have noticed 3 major types of a career path for java developers.
Backend Developers / REST Service Developers
Backend developers are responsible for writing java applications that can interact with a relational or NOSQL database and perform some business logic. Many applications are being developed with java as backend. This includes mobile apps as well.
The job of backend developer is to create web enabled application that can be exposed as a web service. This service can be called from any client including web or mobile or any IOT device.
Full Stack Developer
Full Stack developers in java are primarily working on MVC frameworks like Spring MVC, Struts or similar. This requires an in-depth understanding of Core Java, Servlet API, and respective framework usage.
There is still a ton of legacy applications that use traditional Java-based MVC frameworks. Therefore the job market is good for these developers. However, I foresee this will change very fast.
If you find yourself working on Servlet, JSP, JSF or MVC based frameworks too long it may be a sign that you need to change your job to survive in the job market.
Data Scientists / Big Data Analysts
Many companies are doing big data analysis with the help of MapReduce developers. Data scientists are java developers who can write map reduce jobs in Hadoop or similar environment. This requires basic knowledge of core java and detailed understanding of the Hadoop ecosystem. Data scientist jobs are well paid and plenty in recent past. Many ETL developers are also moving toward this job role.
Many java developers are learning to use Spark and quickly getting a high pay job as a data scientist.
I see think the data scientists job market is still evolving and more jobs will be available for beginners as well.
- Updated Broken Links and Added new reference links – January 24th 2017