It’s amazing how much Java changed in the last several years. Think about the new Java releases. We have a new release every six months now compared to several years before. Being focused almost entirely on Java programming for the last 14 years we can proudly say that what many say for Java being a programming language of the past, is totally wrong. Let’s see what are the top 5 emerging technologies for Java devs.
1. Serverless – Here I won’t speak about the typical explanation that is “Serverless is a cloud architectural model that abstracts away from developers the need to handle server provisioning and maintenance. It is commonly associated with Functions-as-a-Service (Faas), a form of computing service that was the pioneer of all serverless systems. FaaS executes self-contained code on-demand. It is stateless, not keeping any data persisted after an execution.” Link
What Paul Johnston is saying about serverless is the best one I’ve read – “Serverless is an approach, not a technology” If you dig deep it means that you must understand your business in order to choose serverless as an approach. It should cost you nothing if nobody is using it. As Paul says “A serverless application is one that provides maximum business value over its application lifecycle and one that costs you nothing to run when nobody is using it, excluding data storage costs.”
Developers nowadays think that code is value and it is not. The code is starting to be replaced by services and we won’t need so much code anymore. The more services we use, the more time the developer has to build business value. So serverless will limit your time to managing, adjusting and changing servers. AWS was the first cloud vendor that introduced an abstract serverless computing offering with AWS Lambda. Nowadays, all the cloud vendors have such.
2. REST – It is the reigning champion in the API domain. REST was first defined by Roy Fielding in his doctoral dissertation in 2000. The other two APIs that are gaining popularity are gRPC from Google and GraphQL from Facebook. Both are interesting technologies but offer different capabilities. Some of the key things about REST are:
- Usually uses HTTP protocol
- Depend on HTTP Verb and Status Code
- Usually uses JSON as payload
- Must have HATEOAS
- Let’s compare REST, gRPS & GraphQL:
You can also check some example with these 3 given by Kristopher Sandoval here
3. Spring – There were times with fierce competition between Spring and Java EE but nowadays there is a clear winner. Spring grew so fast and developed so many things that now it is Spring of everything – Spring Boot, Spring Cloud, Spring Security, Spring Data, Spring Integration, etc. It is the number 1 framework in the JVM ecosystem.
4. Apache Flink – Stateful computations over data streams. Apache Flink is what makes big data steaming possible nowadays. It isn’t as popular as Spark yet but Alibaba bought Data Artisans who are the people behind Flink and now they will have the marketing budget. It is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale. Read in-depth here. For a great use case check this presentation on how Lyft is using Flink.
5. Distributed SQL? – many people said that NoSQL is the future and SQL databases are dead. However, it’s visible that the top 4 databases based on use are all SQL based.
Why SQL excels even nearly 50 years after its invention?
- SQL is originally based on simple algebra and it’s originally designed for data. It really excels in organizing and accessing data
- It’s proven – RDBMS and SQL are battle-tested and used by some of the biggest tech companies like Facebook
- There are a huge knowledge and community
- SQL is easy to learn
- Interoperability – even though SQL syntax has variances in different databases it is quite similar
- There is a saying “Don’t do in code what you can get the SQL server to do well for you”
- SQL and NoSQL play different roles
What is the future? Companies are looking for a “master database” that will combine the horizontal scaling of NoSQL with the ACID guarantee of SQL. Google and Amazon have built Spanner and Aurora but still they have limitations. Aurora misses the horizontal scaling but has almost all SQL features, while Spanner is the opposite (has the horizontal scaling but misses many SQL features). Maybe someone will invent the Distributed SQL database in 2020
That was it from me. Hope you found it interesting. What are your emerging technologies? What do you want to happen in 2020?