Java technology challenges

Here is my Java wish list.

  1. module deployment – Java has done well to define an archive format and class loading system that enables code to be organized into libraries. However, a modular application needs more than the deployment of Java classes. It also needs to accommodate the following:
    • SQL DDL for initial database schema creation and on-going evolution
    • SQL DML and possibly Java code for upgrading data as the schema evolves and the application features are upgraded
    • XML documents and binary resources containing data that needs to be processed by the application and possibly loaded into the database
    • HTML pages or templates (e.g., Tapestry) that can be dynamically added to a Web application
    • Scripts (e.g., Groovy), rules, or other forms of code that can be dynamically executed.
  2. module dependency – Java needs a better way to dynamically enable or disable behaviors that depend on whether modules of code are available, similar to how function_exists(f) works in PHP, without having to resort to invoking methods using Java reflection. A static programming model should be possible, while protecting a block of code to be conditionally executed only if another class is loadable.