ZeroTurnaround, maker of JRebel, blogs about Java development tools, JVM news, and Android live-coding.
HN commenters link it for JRebel and for its cheatsheets, in threads about JVM tooling and web frameworks.
Disclaimer: This is cribbed from my upcoming "The Well-Grounded Java Developer"
---------------------
If you investigate Ola Bini's pyramid where languages fall into static, dynamic and DSL layers you'll see his arguments for what type of programming tasks suite which layers. Java sits firmly in the stable layer, and so do all of its various web frameworks.
As expected for a popular and mature language, Java has a large variety of web frameworks, such as these:
Spring MVC, GWT, Struts 2, Wicket, Tapestry, JSF (and other related “Faces” libraries), Vaadin, Play, Plain old JSP/Servlet
Java has no de facto leader in this space, and this partly stems from Java simply not being an ideal language for rapid web development.
The former leader of the Struts 2 project, a popular Java-based web framework, had this to say on the subject:
"I’ve gone over to the dark side :-) and much prefer to develop in Rails -- for the conciseness mentioned above, but also because I don’t ever have to do a “build” or “deploy” step during my development cycle any more. But you guys and gals need to be reminded that this is the kind of thing you are competing against if you expect to attract Rails developers ... or to avoid even more “previously Java web developer” defectors like me :-).
Craig McClanahan, Oct. 23, 2007"(http://markmail.org/thread/qfb5sekad33eobh2)
Java is a compiled language, and as alluded to previously, this means that every time you make a code change to a web application,…
Nobody cares about which part you're responsible for, they care about how nice the tools are. Saying it's OSS and not your problem is weak and looks bad. Especially given it's on your GitHub organization!
If you want people to use IntelliJ, you have to step up to the plate and contribute to stuff outside of the core IDE.
If things like LaClojure are garbage, it makes you look bad and people will start using other tools.
Java programmers that learn Clojure are, (in my experience), leaving their Java IDEs of choice because the support is poor for their new favorite language.
They're coming home to Emacs or experimenting with LightTable.
That makes it your problem. Nobody cares about excuses.
Let me be clear, I don't care if you fail, I'm an Emacs user and believe in programmers maintaining their tools for themselves out of deep mistrust for commercial entities owning how programmers do their work. But if you want to be competitive you have to stop being myopic.
Have you been paying attention? Companies like http://zeroturnaround.com/ make their product free for Scala users because those people are the vanguard for their respective communities and will often be the ones making product decisions.
There is a comparable thing going on with YourKit's wonderful support of the Clojure community.
How exactly are you staying on top of the latest developments in JVM languages if you're concerned exclusively with "IntelliJ-the-IDE-itself"?
> it's something you don't find much these days
This is approach is available with all of the JVM languages too.
Putting that with what others have noted about the CLR, C, and LISP implementations, this may be more common than rare.
https://zeroturnaround.com/rebellabs/reloading_java_classes_401_hotswap_jrebel/
https://www.jetbrains.com/help/idea/2018.1/debugger-hotswap.html
It may not be so much the case the people are being uncharitable as that there really isn't much that is new or unique in software.
For my own part, I have hit that wall so many times that I now begin with the assumption "if I can imagine how it might work, someone has probably already done it".
That is actually nice in the sense that I nearly always have a starting foundation when solving problems these days but also frustrating to the point of cynicism when discoveries or inventions I put a lot of time in to turn out to be minor variations on something 1k+ people already knew about.
Haven't used Wicket, but this is what a good web framework comparison had to say about it[1]:
With its clear MVC model, clean HTML and a wicked component module, you can create new applications with reusable components quick and easy. Wicket does use a model inheritance for it’s components, which isn’t great due to a bit steeper learning curve.
The existence of markup files for every component gives you a clear separation of concerns between the controller deciding what to display and the view that specifies how to display. This not only reduces development time but also gives your web designers the confidence to modify the HTML code without worrying about crashing and destroying everything.
[1]: http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/
I was wondering how Ceylon is supposed to be different from Scala. I found this blog post from 2011 that compares Scala, Ceylon, and Kotlin: http://blog.lunatech.com/2011/08/24/scala-ceylon-kotlin-goals. Basically, Scala aims to be concise and “scalable” by explicitly aiming for both OOP and FP support. Ceylon aims to be an improved Java that is more concise, powerful, and modular, while still being familiar. Ceylon also aimed to be less complex than Scala while still being as powerful, but I don’t know if it has succeeded.
There is also this huge 2013 article comparing eight JVM languages with each other: http://zeroturnaround.com/rebellabs/the-adventurous-developers-guide-to-jvm-languages-java-scala-groovy-fantom-clojure-ceylon-kotlin-xtend/
Number 14 on Redmonk.
http://redmonk.com/sogrady/2014/06/13/language-rankings-6-14/
"The next JVM language to learn" (Java-focused survey): Scala leads comfotably with 47%.
http://zeroturnaround.com/rebellabs/interview-with-typesafe-4-answers-about-the-past-present-and-future-of-scala-development/
Apart from that, you are completely missing the context. People are not looking for a random language, but for a language which is compatible with Java and Android, allows gradual migration and protects existing investment.
Scala is the top-contender here.