Java Changed tremendously for the last 10 years. Think about the new Java releases. There is a new release every six months now compared to every second/third year as it was 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 be very familiar with every detail of your business in order to use serverless as an approach. The idea here is that if no one is using your product your cost must be zero. 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.”
Nowadays, code isn’t of so much value anymore. Services are now replacing code and we won’t need so much of it anymore. Services will allow the developer to spend more time building business value. So serverless will limit your time to managing, adjusting and changing servers. It was AWS who together with AWS Lambda introduced abstract serverless computing offering. Nowadays, all the cloud vendors have such.
2. REST – reigns 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:
Other 3 examples given by Kristopher Sandoval here
3. Spring – There were times of fierce competition between Spring and Java EE but nowadays there is a clear winner. Spring is the champ. It blossomed so fast 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 – enables big data steaming nowadays. Alibaba bought Data Artisans who are the people behind Flink and considering the tremendous marketing budget this corp has we may expect that Spark won’t be more popular soon. Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. It is designed to perform computations at in-memory speed and at any scale. Moreover, it runs in all common cluster environments, Read in-depth here. Lyft has an amazing use case with Flick which you can check in this presentation.
5. Distributed SQL? – many people said that NoSQL is the future and SQL databases are dead. They are all wrong as the top 4 DBs are all SQL based.
Why SQL excels even after 50 years of its invention?
- SQL is originally designed for data and is based on simple mathematics. It really excels in organizing and accessing data
- Some of the biggest tech companies like Facebook use RDBMS and SQL. They are battle tested.
- There is a huge knowledge and community
- SQL is easy to learn
- Interoperability – even though SQL syntax has variances in different databases it is quite similar
- “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? A “master database” is needed. What would it look like? It’ll combine the horizontal scaling of NoSQL with the ACID guarantee of SQL. Google and Amazon built Spanner and Aurora but they still 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). Distributed SQL database in 2020? Why not
That was it from me. Hope you found it interesting. What are your emerging technologies? What do you want to happen in 2020?