To gather insights on the state of the Java ecosystem today for DZone's Java Ecosystem research guide to be published in September, we spoke with 15 executives who are familiar with the Java ecosystem.
Here’s who we talked to:
Joel Depernet, E.V.P. Global Research and Development, Axway | Sacha Labourey, CEO and Founder, CloudBees | Rick Reich, CEO, Development Heroes | Asad Ali, Principal Software Developer and Lisa Hamaker, Marketing Manager, Dynatrace | David Park, V.P. of Products, HackerRank | Charles Kendrick, Founder and CTO, Isomorphic Software | Wayne Citrin, CTO, JNBridge | Raymond Augé, Senior Software Architect, Liferay | Laura Kassovic, Founder, MbientLab | Cameron Wilby, Co-Founder, Origin Code Academy | James Faulkner, Technology Evangelist, Red Hat | Paul Trowe, CEO, Replay Games | Calvin French-Owen, CTO and Co-Founder, Segment
We asked our respondents, "What do developers need to keep in mind when working with Java?" Here's what they told us:
- Java has been around a long time. As you use different software patterns make sure you know how your code will impact production. Think about the bigger picture. If you’re providing APIs to other coders, keep contracts in place.
- Get a book on programming for limited memory devices. Learn how to push pixels on small devices. Once you learn to do that you can work on any device since they’re all larger and faster.
- Do not feel uncool using Java. If you learn Java, you have access to a vast, robust ecosystem.
- Always have a primary skill to ensure your stable employment. Look for a secondary skill, something you find fun that will provide you with “developer insurance.” Stay agile. Look for what you’ll need to be able to find a job. Learn how to think critically about problems.
- Keep in mind the tooling. It’s getting better but lags behind other platforms. I have high hopes for containerization. Cloud-based development tools will improve. They will be preconfigured to work making your job easier. Ensure tools are good.
- Developers need to remember that Java’s static-type checking is just another form of automated testing. Structuring code to allow more static-type checking needs to be weighed against other forms of automated testing. Specifically, we find that if a developer has spent too much time with Java to the exclusion of other languages, they tend to expend heroic efforts structuring code so that it’s possible for the Java compiler to check more error conditions. This effort is usually better spent on automated tests, which can catch a much wider range of error conditions.
- Java is not necessarily the best solution for all applications. For example, the JVM will always consume more memory than an equivalent C program, scientific computing and numerical analysis is typically handled with Python, and C# has constructs for asynchronous programming built into the language.
- Java has a very mature standards library. Detailed structure is already implemented. Learn to appreciate the tools that are available and leverage the hell out of them.
- Try to understand some domain of software very well – I’m partial to Java. There is less opportunity for advancement if you’re too much of a generalist. You need to know the fundamentals. Don’t avoid a language because it’s too time consuming to learn. The more you know about how a software works behind the scenes, the more valuable you become. Knowing the principles of how something works is fundamental. Keep learning.
- Full knowledge of Java is a good basic skill to have. It’s a key investment for developers. Know the libraries but be sure to choose the best solution for the problem you are trying to solve being aware of the vagaries of similar libraries (i.e. some have security patches, others do not).
- Companies are looking for the smartest engineers. They are less concerned with knowledge of a particular language. People who have strong coding skills, know the fundamentals of computer science, as well as real world application. Know how to program for the Java application server and how to make API calls. Know core computer science and algorithms. Companies are looking for developer with strong fundamentals. Practice core algorithms and data structures to become familiar with the concepts.
- Learn from the experts. Don’t reinvent the wheel. You learn the hard way in school. Look for simpler ways in the ecosystem. Get involved with Open Source. Start small with a one-line bug fix and move up.
What advice do you have for developers when working with Java?