Extend Java apps to mobile and cloud
With a little planning, Java applications and skills have a bright future
So here you are, a Java developer being asked to start doing some mobile app dev on the side or as part of your core role. Or maybe you're a mobile app developer supporting a full-stack Java developer. Either way, you've landed the job of extending your existing Java apps and legacy data sources forward and connecting to new or existing mobile apps in the cloud.
Chances are, your apps and systems are working alright but don’t have the most modern functionality or the kind of interface users have come to expect, given the quality of today's mobile apps. The world has moved on, and like it or not, mobile devices have become a de-facto standard for accessing pretty much everything.
“Whatever your company's strategy, it should provide plenty of work for us—Java developers—for years to come.”
If you don’t want your company to get left in the dust, you need to step up your game and modernize your apps, leveraging the latest cloud and mobile development tools, platforms, and best practices.
That might not sound simple, but it doesn’t have to be as hard as it used to be. The key is overcoming three main challenges:
- Selecting and using the latest cloud-based platform, tools, and APIs
- Upgrading your skills so you can properly build and integrate new, born-on-the-cloud services and APIs to extend and modernize your Java-Android mobile applications
- Determining which legacy applications and data sources you should renovate and/or extend vs. those that would be best to leverage in a container
Choosing the right Mobile and Cloud development platform and tools
Let’s start with selecting a cloud platform, Platform-as-a-Service (PaaS), or Integrated Development Environment (IDE) from which you can develop, launch, and/or host your application(s). There are a number of IDEs that you can choose from, so as you evaluate these, you'll also want to think about which mobile development tools and platform you want or need to use. Having a mobile development platform that plugs into, or can at least coexist within, your IDE or PaaS is key. You need to evaluate both together.
Furthermore, to avoid being locked in, the best strategy is to leverage open source-based systems. You should also leverage the best of your in-house skills while outsourcing development of the user experience.
Plenty of systems offer the ability to use trials or free versions of the software or services, which you can use to build a prototype. Trying before you buy is a very good strategy for those with a limited budget or without purchase authority. You can develop a minimum viable product and later demonstrate for your organization the value of both the prototype and the tooling, along with the associated cost of licenses to develop and run the final product.
Some other factors to consider:
- Do the platforms and tools under consideration have native support for Java and Android?
- Will they enable you to deploy your apps in a hybrid implementation?
- What other services or APIs do you want or need to integrate into your applications?
For system architects, the best approach to investigate the latest tooling is to consult Forrester or Gartner Magic Quadrant research and leverage technologies that let your company get a quick start.
For developers, the most important factor is work efficiency and cost flexibility. Therefore, systems that work in multiple cloud platforms are essential. SaaS (System-as-a-Service) and PaaS cloud offerings should look very promising in that light.
Finally, cloud platforms require various systems and containers to work in an efficient manner and employ new consumption models. Cloud-based development systems, with flexible payment options like PayGo, deliver all the functionality and language support needed to host and deliver your prototype and, ultimately, your final services for your mobile app if desired. Some organizations need these systems to remain on premises; such an option should be available as well.
Building and extending your skills
The good news for Java developers is that Java is here to stay and is alive and well in Android mobile app development. While nuanced for creation of mobile apps, development for Android is not very different from working in most typical Java systems, and in some ways it's easier. Mobile development is based on the familiar Model-View-Controller (MVC) pattern known from web development. Developers who have used Spring MVC, JSF, or good old Struts should feel right at home.
The challenges, however, often go beyond just your skills. If you are going to modernize your apps and take advantage of cloud and modern platforms, languages, and tools, your organization needs to give you access to these technologies, and you need to give input on which will work best for you, your team, and the apps your organization really wants and needs to build and extend.
Modernizing your existing applications for your enterprise will require some thought. Which cloud development platform(s), tools, and services are best suited for your business based on existing Java systems, policies, and investments that you have already made?
If you are going to be working with other mobile app developers, you need to understand their skill sets. Likewise, they need to understand what legacy apps and systems are important to the organization and need attention as you collaborate on delivering the best possible experience to your mobile users.
Figure 1. A fashion-recommendation app that uses geolocated weather data and Watson-based mood recognition
If you are a hardcore JEE developer and have been given a side task to deploy a new mobile interface, you now need to rapidly come up to speed on using your Java skills in what is likely a new environment for you, Java on Android. The language will be very familiar, so you have a leg up on many others, but building a mobile app will require you to learn how to best apply your skills to integrate and use new services on the device as well as reaching into your existing enterprise apps to harness the data and services they deliver.
Alternatively, it might be that your core Java integration and security team will be delivering the architecture of the solution only. In this setup, the gee-whiz job of creating a high quality user experience for the mobile platform might be best delivered with support from an outsourced team. In such a approach the job of the full stack Java development team would be to deliver the "roots" of integration and security, as well as the "trunk" of the mobile service. Only then, with a prototype-like version of the mobile app in hand, would the next version that encompasses more refined user experiences—the "leaves" of the solution—be built on top and around the trunk your team created. This approach guarantees conforming to the best practices for integration and security in the enterprise.
Through the use of modern monitoring and analytics tools for mobile quality assurance teams, you'll have what you need to quickly understand user feedback for deployed mobile apps and harness that feedback to tweak the functionality and reliability of the apps to meet user expectations.
Finally, there are new table stakes in the mobile market besides an engaging user experience, including integrated and seamless use of social networks and the rise of cognitive computing, all impacting the way you develop and deliver your new mobile apps.
Which apps and data sources are you connecting, extending, and renovating?
Adding a mobile channel to an existing infrastructure follows the same approach as adding a web interface or a Java thick client a few years ago. The mobile effort should prove similar to earlier work your company might have done to leverage existing systems of record and enterprise transaction systems to deliver them to web users.
Enterprise IT architects need to plan for scaling of the legacy system, or migrating it to a microservices architecture in a Platform-as-a-Service. Although web user traffic might seem saturated, more and more users and customers are now visiting sites through the mobile channel.
The proper Java enterprise system built with JEE servers could be moved to PaaS, and some or all of the functionality exposed. In addition, you might prefer to use a middleware server dedicated primarily to mobile development, from the integration and security point of view, to serve as the modern hub for all communication tailored to the mobile channel. Alternatively, you might decide on keeping everything in the container that is hosted on the flexible PaaS and connected to the enterprise system of record.
Whatever your company's strategy, it should provide plenty of work for us—Java developers—for years to come.
- Modernize Java apps with IBM MobileFirst on Bluemix
- Mobile development
- Java development
- Cloud computing