Today we`d like to talk about one of the hottest topics among all Java admirers - the upcoming release of Java EE 8. Within the SouJava initiative [Java EE 8 - The Next Frontier], Jelastic CEO and co-founder Ruslan Synytsky gave an interview to Elder Moraes sharing his thoughts regarding the adoption of Java EE 8, what significant possibilities it may provide and what bottlenecks you need to be aware of while working with Java.
Elder: Ruslan, we are almost in the release date for Java EE 8, and we know that you are very involved in an expert group. What we can expect from the next version? What do you know about new features, improvements, bug fixes, and so on?
Ruslan: First of all, I like the improvements related to context and dependency injections. I believe these improvements will help to build much better architecture and spend less efforts during development. So this one is very important, I believe. Second one, of course, is the improvement related to servlets. HTTP/2 , non-blocking IO are very important as well for Java to be in line with modern trends and requirements. And the third one is API for RESTful webservices improvements. In combination with JSON processing, it gives much more flexibility, and it will be much easier to develop modern scalable and robust Java applications. I can say these are the most important improvements.
Elder: Sure. So Ruslan, you are in front of the Jelastic, and you have been working with containers and cloud technologies. How do you see Java EE related to containers and to the cloud? Java EE is ready for the cloud and containers, this version would be more suitable for containers? What can you say about it?
Ruslan: Good question! I have some good news and bad news for you 🙂
Good news: containers and microservices adoption is growing among Java developers. So we see much more developers who are looking for microservices, immutable applications, and more scalable solutions.
However, there's an issue with adoption, because as we know, at the beginning Java was not designed for such kind of things. And in some cases it is really hard to migrate existing Java applications to containers, to redesign them to microservices. And our mission is to help people to figure out what is the best way to do it.
I hear such advice from some experts: don't rewrite applications, don`t migrate applications - just make new applications, write cloud-native applications. And, of course, the best way of moving to the cloud is to start writing for the cloud. However, it's not an easy task for many enterprises. They can not do it in short terms. Second, it`s very expensive for small and medium-size businesses. Our goal is to help people to figure out what is the best way: to redesign application or to write a new one.
And we do a lot of researches related to decomposition of legacy applications to full Java EE servers and migrate them to containers and to the cloud. So we have really good success use cases, but still, it's not obvious today how to do this - there's no clear guide on how to make it happen. So I hope altogether we can build some joint knowledge and share this experience among Java developers and our community.
Elder: And what about the migration from Java EE 7 to Java EE 8? As long as you know, do you believe developers will have some hard times to re-write codes etc? What can they expect about it while migration from 7 to 8?
Ruslan: Definitely, it will take some time, as we can see from past historical statistics. However, as soon as it becomes available, people will start looking at this and will definitely make some experiments, write applications. I do believe if people realize it will help them to save time, they move quickly to this direction. So I believe this Java EE 8 release is very important for the whole community. We have to evolve, transform Java, and we have to meet modern requirements. So I`m very excited about upcoming Java EE release.
Elder: So do I. Ruslan. It took very long time since the last version of Java EE was released in 2013, so it took 4 years because of delays. Do you believe this long time took for good or for bad in terms of adoption and expectation from market. What can we expect from this huge delay between versions?
Ruslan: Of course, we must be very efficient in terms of time and money. And if we delay new cool features, if we do not meet modern requirements, it`s bad for the whole community. I believe that delay is not good, however, the quality is important. And you need to find the balance.
I heard in the past that Java is dying, but it should not happen. We put all our efforts to help end customers to believe in Java and continue to use Java, specifically in the cloud. As you know, a cloud was born from hosting industry, and if you analyze, there're not so many hosting providers or cloud service providers that are Java focused. The majority was PHP and other scripting languages focused. We saw many startups were trying to solve this issue, but they were not able to solve the core problem, and they don't exist anymore.
However, Java continues to evolve, and I believe it can be even better if we improve the speed of evolution and start releasing much more often - maybe with smaller parts but giving new features back to the community faster. I hope this movement to GitHub repository will help to speed up the development. Because there are millions of Java GitHub users already, and this helps them to be closer to the source code, to subscribe to the updates, to contribute back something new. And I’m sure this will speed up the evolution of Java.
Elder: That would be my next question 🙂 I truly believe that Java community is always about community, always about to be involved, to contribute. So you believe that this move to GitHub will get the developers of the community closer to specification?
Ruslan: Absolutely, as I`ve mentioned, millions of users can get it easier now. You can watch what people do, you can offer your own ideas, you can commit your pull requests. So, it`s a really good movement. I`m personally already subscribed, watching what people do, trying to figure out what is good and what is probably not to provide some kind of feedback.
Elder: Tell us a bit about Jelastic: do you plan some features related to Java EE 8 in terms of adoption? Are you preparing your product to this new release version? Will it impact your business, what can you say about Jelastic and JavaEE 8?
Ruslan: Jelastic is a vendor-neutral platform, we do not force any specific language or solution. Of course, we love Java, and Java is our core experience. Because actually Jelastic is Java + Elastic 🙂 But our roadmap is driven by end-customers demand mostly. Today we provide out of the box solutions for GlassFish, Payara, WildFly, JBoss, TomEE, and others. We already started to pack certified container based on GlassFish 5, which is actually based on Java EE 8. And I believe in a week it will be available for beta testing. We will definitely introduce new stacks based on Java EE 8 on Jelastic cloud platform. And we will push it to production across the globe to our partners.
Elder: Ruslan, we have that old fighting between Spring and Java EE. Do you believe that many developers that move from Java EE to Spring, maybe would consider coming back with this new version? Or do you believe that Spring is very detached from JavaEE world and they should live together?
Ruslan: For my opinion, different options help to find a better solution. I do believe that both should exist. And Jelastic does support both.
However, we need to understand why Spring Boot got such a big traction. And we need to understand the core problem. For my understanding, the problem is the complexity of deployment, complexity of scaling, clustering and high availability. In Java EE it`s difficult to figure out how the deployment process works. In many application servers it is a black box. It`s very hard to control and customize. It's even hard to find details about specifics - I mean how deployment works.
Recently I started to collect this kind of information to build some guide for people and to share it with the community. And it`s really hard to find the details. I have to ask experts - how application servers behave when you redeploy the application, or when redeployment fails, and so on.
With Spring Boot this problem doesn't exist because this built-in deployment solution doesn't exist at all. You have to manage it by your own. Of course, it brings much more work to you, but in many cases, it gives you much more control. You can control this process, you can design this process on your own.
To be honest, in Java EE this deployment mechanism was not developed for a long time. I do believe we need to pay attention to this, to simplify this and to clarify how it works.
Today people started to move to standalone servers, they just spin up several standalone servers and they do replication with Hazelcast or database, they put load balancer on top of it. They develop their own clustering, high availability, and deployment to the cluster. It can be adjusted in Java EE platform and it will definitely improve the adoption and trust. Because even with Spring and Microservices you need to have some platforms that manage all the stuff, like this orchestration platform, that does management of containers, service discovery, and so on. In past, full Java EE stacks had something similar already inside. They have discovery mechanism, they have like the high availability inside. It was just not clear how it works. I believe this is the core problem and we need to solve this at the beginning.
Elder: Do you have any resources that you would recommend for people that want to start with Java EE, that want to learn about microservices, containers...Maybe some books, blogs, podcasts, or whatever.
Ruslan: Of course, I do recommend to google it as number one 🙂 Try to figure out what exactly you want to find and google it. And second, subscribe to the Java leaders, Java champions accounts on Twitter. Follow them and you will definitely be updated because they often promote some new books or articles, and different opinions. Personally, I follow the majority of experts and I try to understand what exactly they propose, what kind of opinion they want to explain. So I recommend doing the same. It is very hard to find one resource with all needed information because too many things are going on around, so you have to follow different sources. Also, join local Java user groups where you can share your experience and hear an experience of experts.
Elder: Do you have any final thoughts, you want to add to this conversation?
Ruslan: I do believe that upcoming releases of Java EE 8 and Java 9 just prove that this programming language is actively evolving. And with a huge number of contributors, we’ll be able to make it even more compatible with the current needs and current trends. We constantly try to support the growth of Java community and spread out the word about updates and possible solutions, for example, right now we take part in the Java USA tour and planning to do the same tour around JUGs in Europe soon. Join your local communities, be involved in communications, contribute back and enjoy the life!
Watch a full video interview below.
Ready to try JavaEE in the cloud? Start with one click installations of GlassFish, TomEE or WildFly auto scalable clusters using free trial.