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.
Watch the full video interview below, and/or check out the transcript below it.
Elder: Ruslan, we are almost at the release date for Java EE 8, and we know that you are very involved in an expert group. What can we 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 effort during development. So this one is very important, I believe. Second, of course, is the improvement related to servlets. HTTP/2 and non-blocking IO are very important as well for Java to be in line with modern trends and requirements. And the third one is the API for RESTful web services 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 the CEO of Jelastic, and you have been working with containers and cloud technologies. How do you see Java EE relating to containers and to the cloud? Java EE is ready for the cloud and containers, but would this version 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: Container and microservice adoption are growing among Java developers. So we see many more developers 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 these kinds of things. And in some cases, it is really hard to migrate existing Java applications to containers, or 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 cannot do it in the short term. Second, it's very expensive for small and medium-size businesses. Our goal is to help people to figure out which is the best way: To redesign applications, or to write new ones.
And we do a lot of research related to the decomposition of legacy applications to full Java EE servers and migrating them to containers and to the cloud. So we have really good, successful use cases, but still, it’s not obvious today how to do it – 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? What can developers expect when migrating?
Ruslan: It will definitely 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 perform some experiments nd write applications. I do believe that if people realize it will help them save time, they will move quickly in this direction. So I believe the Java EE 8 release is very important for the whole community. We have to evolve and transform Java, and we have to meet modern requirements. So I'm very excited about upcoming Java EE release.
Elder: So am I, Ruslan. It's been a very long time since the last version of Java EE was released in 2013. It took four years because of delays. Do you believe this length was good or for bad in terms of adoption and expectations from the 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've heard in the past that Java is dying, but that should not happen. We put all our efforts to help end customers believe in Java and continue to use Java, specifically in the cloud. As you know, the cloud was born from the hosting industry, and if you analyze it, there’re not so many hosting providers or cloud service providers that are Java-focused. The majority was focused on PHP and other scripting languages. We saw many startups 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 a GitHub repository will help to speed up development. 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 the Java community is always about community, always about being involved, contributing. So you believe that this move to GitHub will get the developers from 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-customer demand, mostly. Today, we provide out-of-the-box solutions for GlassFish, Payara, WildFly, JBoss, TomEE, and others. We already started to pack certified containers based on GlassFish 5, which is actually based on Java EE 8. And I believe that in a week it will be available for beta testing. We will definitely introduce new stacks based on Java EE 8 on the Jelastic cloud platform. And we will push it to production across the globe to our partners.
Elder: Ruslan, we're seeing that old fight between Spring and Java EE. Do you believe that many developers that have moved from Java EE to Spring maybe would consider coming back with this new version? Or do you believe that Spring is very detached from the Java EE world and they should live together?
Ruslan: In 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 big traction. And we need to understand the core problem. From 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 do 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 on 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 have started to move to standalone servers. They just spin up several standalone servers and they do replication with Hazelcast or a database, then they put a 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, and it will definitely improve adoption and trust. Because even with Spring and microservices, you need to have some platforms that manage all the stuff, like an orchestration platform that does container management, service discovery, and so on. In the past, full Java EE stacks had something similar already inside. They have a discovery mechanism, they have the high availability inside. It was just not clear how it worked. 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 who want to start with Java EE, who 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 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 the needed information because too many things are going on, 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 the word about updates and possible solutions. For example, right now, we're taking part in the Java USA tour and planning to do the same tour around the JUGs in Europe soon. Join your local communities, be involved in communications, contribute back, and enjoy life!