I think you are on to something here. Java is definitely not fun. I think it all boils down to the fact that java makes you do too much work for things that should be either be trivial or more terse. This is due to both the syntax of the language and the crappy APIs.
So Java.next would have a syntax that is more expressive, more powerful, but still approachable. And better, more pragmatic APIs. A language where you wouldn't need Apache commons :) Next, I think it should be a language that you can bend to your will to a large extent (apparently Scala is a bit like this?). In addition to DSLs, this would allow language features to be in effect added without waiting for some JCP to approve it and build it out. The language would evolve via idioms. As mentioned before, it should start really fast. It should support both compilation and interpretation. Interpretation would come in handy for build tools and scripting tools. Isn't it annoying having to write .bat files and .sh files to launch java apps? And switch from your n It should have a REPL. (how in 2011 can Java still not come with a REPL?) On Wed, Jun 15, 2011 at 3:08 PM, Ricky Clarkson <[email protected]> wrote: >> So then the question becomes: What features are compelling that java does >> not have? > > Fun, really. It should be more fun to write code in than Java is. > > That means the runtime should start without noticeable delay, there > should be an interpreter installed by default, and the syntax should > be pleasant to read. To keep the sense of fun, it should be difficult > to get into difficulties with mutable values and threads, because it's > not a lot of fun to solve those problems. It should be difficult to > use the supplied APIs incorrectly, because working out what you did > wrong based on runtime errors isn't fun (I'm looking at you, Swing and > GWT). > > <> brackets are not fun. C++'s templates, Java's generics and XML's.. > XML show this quite clearly, so we don't need those. > > Lambdas are fun, single-method anonymous classes are not. Type > inference is fun, repeating types everywhere is not. > > A language that helps you as much as you want to get your types right > is fun, a language that delegates that to the runtime is not. Though > it is good to be able to selectively delegate that to the runtime as > you desire - sometimes you know (ahem!) code will work no matter what > the compiler says. > > It should target fun platforms. The browser, Android, iPhone and > native are fun platforms for various reasons, the JVM and the CLR are > not. They're useful, but not fun. > > -- > You received this message because you are subscribed to the Google Groups > "The Java Posse" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/javaposse?hl=en. > > -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
