navigation

Top 5 Emerging Technologies among Java Devs

Top 5 Emerging Technologies among Java Devs

by
July 1, 2020

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.”

Emerging Technologies, serverless,

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
    • Stateless
    Let’s compare REST, gRPS & GraphQL:
REST gRPC GraphQL
Pros
  • Easy to scale  because of the stateless nature
  • Easy to integrate due to HATESOA
  • Performance – Usually uses HTTP which is supported by most servers/clients to catch the request.  
  • Easy to write, easy to read and easy to create SDK due to built in code generator 
  • Faster than other web service techniques 
  • It has all of the advantages of HTTP because it is based on HTTP2
  • It uses Protobuf and that is why it is strong typed
  • It has GraphiQL which is a responsive UI for testing and a document browser for GraphQL endpoint 
  • Clients can receive the data in a predictable way – no more data redundancy and overfetching 
  • Ability to fetch data from different resources by just one request 
  • Strong typed
Cons
  • No uniform style for documentation
  • Field deprecation, versioning your API may be a drama 
  • There are a lot of constraints due to HATEOAS 
  • Over fetching 
  • Every request uses PUST method and this leads to inability to leverage HTTP catching 
  • No built in UI support for debugging and testing 
  • It has circular query which is a headache 
  • Composite endpoints are difficult and may hurt performance 
  • No built-in cache 

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. 

spring, sour, java

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.


streamig, applications, AI

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.

database model, dreamix, DBSM

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?

Stoyan Mitov

Blogger at JAXenter, business development director at Dreamix, co-founder at Grajdanite.bg and active sportsperson by passion.

More Posts - Website

Follow Me:
TwitterLinkedInGoogle Plus

Do you want more great blogs like this?

Subscribe for Dreamix Blog now!