One fine day, you are called into Larry Ellison's office and told of a top-secret plan to sunset the Java language and replace it with a new language, to be code-named Shiva. Some conditions are laid upon the project:
- it is necessary that it target the JVM, and interoperate smoothly with Java classes, and that it generate classes that Java can use. It should also play nicely with other languages in the jvm ecosystem
- it is not necessary that it resemble the current Java language in any particular, but it should be as easy as possible for a Java developer to use, consistent with inclusion of useful features and simplification of existing features
- it should address what you consider the most important developer pain points in the use of java, while at the same time
- continuing to facilitate large-scale enterprise development which should be assumed to be distributed in space (protoype in Somerville, design in Palo Alto, develop in shops in Peoria, Mumbai, and Lima) and time (ie, programs that will be easier to maintain and develop than to scrap and rewrite).
- it should be easier, safer, and more pleasant to use than Java is today, or than Java can be made tomorrow.
Two points are pretty firm:
Conflicts between preserving existing syntax and fluidity of new and existing features will be resolved in favor of fluidity of new and existing features.
Conflicts between points 3 and 4 will be resolved in favor of long-term safety of enterprise development, not short-term developer convenience.
The questions you will be posed are:
- is this a plausible project? Assuming that Oracle commits to supporting this to completion, is it reasonable to expect this to produce a better language than we'd get by continuing to bolt new features onto Java?
- what changes would you make to the conditions stated above to make this work better, if any?
- what would you most like to change or add to java's capabilities, assuming that the syntax were suddenly fluid enough to do it conveniently?
- what mis-steps would you most like to correct about the current java implementation?
- assuming you were to be one of the architects of Project Shiva, and you could make a good offer to any hireable person (ie, plausibly interested and not currently dead), who would you want to have on the team with you?
SO: if you were given this wheel to reinvent, where would you start?
This post has been edited by jon.kiparsky: 07 August 2012 - 11:25 PM
Reason for edit:: resolved an ambiguity