Java Technology Issues for Managers
Managers of developers using Java technology must deal with a specific range of domain-specific issues. Some of the Java technology issues that managers, rather than developers, must deal with are:
Poor Java Developer Productivity Gains
Important application development technology areas such as communications bandwidth, memory size, and processing power all grow exponentially. Software development has made some historical gains - binary to assembler, for example. However, most recent changes are incrementally better at best, and overall productivity is possibly getting worse due to added complexity.
Traditional Java software development techniques, which rely on “hand crafting” solutions, are no longer adequate to keep up with the demands placed on software development organizations. It is inevitable that hand coding repetitive and mundane tasks will be replaced by automatic code generation and that standardized application architectures will be used.
Changing Java Developer Profile
The typical skill level of Java developers and the type of organizations developing Java-based applications is predicted to change significantly. Almost all growth in developer numbers is expected to come from less skilled mainstream developers. This presents resource problems for project managers.
"Lack of qualified developers will be the No. 1 inhibitor of Java adoption among IS organizations. Consequently, mainstream IT enterprises will increasingly demand and depend on tools focused on minimizing the degree of expertise required to deliver "real world" solutions in competitive time frames. Increasingly, component-based solutions, business rules, code generators, model-driven toolsets, and emerging Web Services models, along with more comprehensive methodologies and integration strategies, are becoming critical for Java development markets.”
Source: New Rules and Realities for Java Technology Markets, Gartner Inc., October, 2002
Emerging Mainstream Java Developers Poorly Served by Java Tools Vendors
The response of Java tools to the changing developer profile has been very poor – especially when benchmarked against Microsoft. Most improvements have been incremental changes aimed at individual developer productivity –with very little done to increase productivity or improve teamwork.
“The profile of the average Java developer will change dramatically during the next five years. Moving from code-centric technology experts to mainstream rapid application development personnel. Java programmers will require tools and training that goes beyond today’s market-leading technologies.”
Source: The Face of the Java Developer is Changing, Gartner Inc., 2004
Code generators are perhaps the definitive tool to provide to less experienced or more mainstream developers. Not only does it save such developers from writing code, it also ensures that the code is error free.
Growing Diversity of Java Architectural and Technological Choices
The software industry has very solid foundations for delivering solid enterprise-grade applications, with operating systems such as UNIX/LINUX, relational databases, the Web, many XML specifications, and Java. A key problem is that software developers, and Java developers in particular, can not agree how to write applications. A large proportion of new development projects using Java technology start with almost a “clean sheet”, with development teams spending time and effort on technical analysis, new architectures, and new technologies, often while the project and development managers are left to worry about business requirements, deadlines, and budgets.
It is not unusual for software developers to be more interested in the technical challenges and opportunities of application development than business requirements. The Java ecosystem of competing products and technologies, while encouraging creativity and innovation, makes it even more difficult for project and development managers to focus the attention of technologists on business requirements.
“It is becoming clearer that today’s basic Java toolsets by themselves are not adequate. Java is too low level to be flexible and programmer productive; programmers must deal with too complex an architecture, with JSPs, J2EE, EJBs, very large class libraries, and so on, leading to unnecessary paralysis by analysis”
Source: Imperatives for a New Development Age: The Party’s Over, Aberdeen Group, February 2004
The problems associated with too much technological choice and architectural uncertainty are particularly true for Java persistence. Because up to 90% of enterprise applications use relational databases, the wide range of Java persistence architectures, technologies, and products can lead to projects loosing a lot of time through initial research.
Increasing Complexity of Java Technology
Java technology reached its tenth anniversary in 2005. It has evolved into the most comprehensive and sophisticated enterprise software development language. A major issue is that as the typical Java developer profile switches to more mainstream developers, Java technology is becoming more complex.
Number of Pages in J2EE Specification
J2EE 1.2 .............. 250
J2EE 1.3 .............. 550
J2EE 1.4 .............. 1,753
J2EE 1.5 .............. lost count!
The core Java technology, the J2EE specification, has increased in complexity to point where it is no longer productive for all developers in a development team to have knowledge of the entire specification. It is even difficult now for senior Java architects to have detailed knowledge of the entire J2EE specification.
Heavyweight, Over-Engineered Platforms
This is primary the fault of Java product vendors and their sales models. To support prices of $10,000 or $20,000 per CPU, a 'platform' is required. How many vendors talk about thier products been lightweight, easy to deploy, and easy to manage? The traditional approach to scalability for these 'platforms' is server farms, which means lots more CPUs and more product revenue. The fact that there's a reducing return on investment with server farms because they do not scale linearly is great news to the 'platform' vendors - that means more CPU sales. So there's no real incentive to make products scalable and high performance.
Some Simple Tips for Success
CodeFutures advises many project managers and technical architects on the various Java persistence technologies available (JDBC, JDO, EJB CMP, Hibernate, SDO). Because FireStorm/DAO supports all the main Java persistence technologies, CodeFutures has nothing to gain from recommending one particular Java persistence technology. Some advise CodeFutures gives to its customers: