8 reasons your next mobile iOS and Android app should be in Java
Java has been one of the most popular programming languages for over a decade, and in 2015, the language proved once again to be a driving force in the industry, as it took a commanding lead in the TIOBE language index. While TIOBE has its fair share of methodological issues, combining it with other rankings such as RedMonk’s or PYPL gives a good indicator of Java’s popularity.
As the major player in the enterprise world, Java has always kept a steady pace, but how do we account for its recent growth? Oracle’s efforts introducing lambdas and streams in Java 8 are certainly a big draw. Being the lingua franca of the fastest growing mobile platform is another important driving force. With Android’s recent move to OpenJDK, and the upcoming release of Java 9 we predict Java’s relevance will continue to increase.
These boons to the ecosystem have obviously created an influx of new blood, but, as veterans, we know that the battle tested strengths of the platform are what will keep developers around for years to come. Here are 8 reasons why Java is the clear choice for your next mobile project:
1. Static typing
With the complexity of backends and mobile apps increasing, it’s vital to have a robust code base that is easy to maintain and refactor. Static typing is the key component in ensuring developer sanity throughout a project’s life, as it catches a large class of bugs at compile time, enables optimizations and forms the basis for Java’s second-to-none tooling ecosystem.
2. Managed Runtime
The JVM’s garbage collector greatly reduces the complexity of writing memory safe applications and eliminates most of the error-prone work associated with manual memory management. Concurrency has been an integral part of Java since its early days, providing thread-safe collections, synchronization primitives and easy to use multi-threading APIs. Reflection is the final piece of the managed runtime, enabling advanced concepts like dependency injection or aspect oriented programming.
The HotSpot JVM’s Just-in-Time compiler and its various garbage collector implementations makes it a no-brainer to choose Java over other platforms when it comes to performance for server-side applications. Ahead-of-Time compilation is the go-to-scheme on mobile platforms. On Android, ART provides near native performance for computationally heavy loads. On iOS, RoboVM uses LLVM, the same backend used for C/C++/Objective-C/Swift compilation, to deliver performance equal to or better than Objective-C and Swift.
Regardless of a language’s theoretical benefits, it’s the tooling around the language that makes or breaks it. IDEs such as Eclipse, IntelliJ and Netbeans are the gold standard by which tools of comparable platforms are measured by. Code navigation, refactoring, completion and templating make writing and maintaining of your project effective. Code hot-swapping, debugging, profiling and unit testing let you easily pinpoint problems. And integration of source control, application server management, and build and dependency management cover the infrastructure required to deploy your project.
5. Huge community
Depending on who you ask, there’s an estimated 9+ million Java developers around the world. This number translates into an immense amount of conferences, books, online resources, forums and training programs from which Java developers can choose to improve their skills. The hiring pool of top Java talent dwarfs that of comparable platforms. And with Java’s ubiquity on both the server and mobile side of applications, Java developers are well positioned to move freely along the full stack.
6. 3rd party ecosystem
Whatever problem you are trying to solve, it’s pretty much guaranteed that the Java community has already solved it for you. Your backend needs big data analytics? No problem, choose one of the plethora of solutions like Hadoop, Spark or Elasticsearch. Don’t want to write your own analytics for your mobile app? Twitter Fabric or Parse have you covered. Need JSON serialization in both your backend and mobile app? Easy, add Gson and share your POJOs and serialization logic across all platforms. With Maven and Gradle at your disposal, integrating 3rd party libraries is as simple as adding a single line to your build file.
7. Alternative languages
While Java remains the primary language of the JVM and is constantly evolving to be more expressive, the platform’s architecture is also welcoming to alternative languages as well. In recent years, languages like Kotlin, Scala or Clojure have seen an increase in adoption, not only due to their features, but also because of their interoperability with the existing Java ecosystem.
8. Code sharing
We reserved the most important reason for last. Java runs on your backend, on Android and on iOS, covering all the major platforms. With this portability, you can save development cost and resources by sharing large portions of your code between these platforms. Use those freed up resources where they count: to focus on your actual product and delight your users!
2015 was clearly a banner year for Java. Perhaps it’s time to build off that success, and make mobile cross platform Java development a part of your professional achievements for 2016.