Microservices was one of the hottest topics at JavaOne 2016, but cloud and mobile were still getting plenty of play in the individual sessions. Johan Vos, CTO of Cloud Products at Gluon, made an impression on Java developers with his talk, Extend Your Cloud/Backend to Mobile.
In this presentation, Vos covered several of the available pathways for pairing enterprise applications with mobile and why most of them don’t work very well. But first, he explained why enterprise is so concerned with this topic in the first place. Not surprisingly, it comes down to consumer-driven development. “More and more people are demanding enterprise functionality on their mobile devices.” The days when mobile devices were seen primarily as a platform for playing games, chatting, or using social media are over. The average consumer, and certainly the internal business user, expects to be able to use enterprise apps with ease on their handheld device.
How are enterprises coping with this demand?
Is integration really that big a deal? In fact, it is the top concern for enterprise when it comes to mobile—even higher on the list than security, maintenance, deployment, or cross-platform and OS compatibility. That’s because the problem is not usually easy to solve using existing resources.
Many companies are simply outsourcing their mobile development needs because they don’t have the staff expertise in-house to handle native iOS or Android programming. Others are choosing to use their existing in-house web development team to present apps through mobile using HTML WebView. However, in Vos’ opinion, this is a mistake. “Experience teaches us that the end user really prefers a native application. They only use the browser as a last resort or if they only need to access information once.” An enterprise doesn’t want to be put in the position of redirecting users to a browser since this is not the experience consumers desire.
REST is not the answer either
A method that works between a web app and the enterprise backend turns into something completely unworkable when communicating with mobile devices. “The problem is, typically, when the backend and web app are hosted on the same server you don’t worry about the amount of data being sent back and forth between the web app component and the enterprise side.” The cost of sending data back and forth isn’t that high, and much of it can be cached on the web app anyway.
The same does not hold true for mobile. It’s important to avoid sending too much data since this eats up bandwidth fast, leaving consumer with a skyhigh mobile bill and a strong sense of dissatisfaction. Setting parameters to limit data sent to a mobile device might seem like a quick fix, but the exceptions just keep piling up. The whole thing turns into a mess since using REST calls creates unnecessary complexity for the backend.
MBaaS to the rescue?
Mobile backend as a service is a type of middleware that can help alleviate some of the strain. Available in many different varieties including OracleMCS and Gloun CloudLink, an MBaaS will typically offer data persistence and synchronization, push, geolocation, analytics, and user/device management. MBAAS features can be a significant benefit. However, using middleware does not, by itself, solve another underlying problem.
“One of the most annoying things people report is that they have two completely different teams and completely different requirements.” Business managers end up unhappy because the mobile application does not deliver the functionality they really wanted. In the meantime, the frontend and backend development teams simply point the finger of blame at each other. The disconnect is a huge obstacle.
Do it in Java
Vos concluded with a simple solution—do it all in Java. According to Johan, JavaFX is what has added real depth to Java’s “Write once, run anywhere” promise. It provides controls that are rendered in the native UI using hardware acceleration. This approach has the potential to bypass some of the pitfalls of native and WebView development. Enterprises also benefit because they can leverage the existing skillset of internal teams.
Teamwork is facilitated as well. Developers on the frontend and backend can at the very least review each other’s code instead of being stymied by a language barrier. Team members on both sides talk to one another and they are able to reuse some of the same code, when appropriate. In real world cases that Vos has experienced, “Having everyone code in Java has created a better atmosphere.” That’s sure to boost productivity and help everyone, from business managers and developers all the way to the end users, get more of what they need. The future of consumer-driven development for mobile could well be more Java.