Concurrency: Past and Present
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Tracking change and innovation in the enterprise software development community
Posted by Charles Humble on Mar 11, 2008 04:00 AM
The JVM's ability to support multiple languages is a facet that has only relatively recently received much emphasis from Sun. The change reflects the changing tastes amongst the broad spectrum of developers who target the JVM, some of whom are looking to dynamic languages to speed up parts of their development process. Through the inclusion of JSR 223 (Scripting for the Java Platform) Sun began to formalise the change, ensuring that Java SE 6 is able to execute scripting language code written in dynamic languages, such as Ruby, Python, Groovy, or JavaScript.
Travis Jensen, a technical architect at SirsiDynix, recently carried out a comparison of Groovy, Jython and JRuby looking at the three languages' suitability as the language for web GUI development by an existing team of Java developers. His assessment compares the languages against five broad criteria:
1. The interaction between the dynamic language and Java. Jensen felt that Groovy came out strongest with Jython close behind:
"Because Groovy supports applying types, overriding class methods is clean. Instantiating a Groovy class is the same as instantiating a Java class."He sees JRuby as presenting the most challenges:
"Going from Java to JRuby is not trivial, even though JRuby compiles down to a class. The compiler seems to be primarily for faster JRuby-to-JRuby interaction."
2. IDE support. SirsiDynix have standarised on JetBrains' IDEA which limits this part of the assessment - NetBeans' JRuby plugin, for example, was not covered. Jensen felt that the Groovy support in IDEA made Groovy a clear winner.
3. The learning curve for existing Java developers. Once again Groovy came out on top in Jensen's assessment:
"As a super-set of Java, it has a very straight-forward learning curve from Java. This is especially important around the APIs, since it uses the Java APIs directly. I honestly don't know whether the top-line productivity is as high as Python and Ruby, but I don't have any evidence that it is not. My gut feel is that the Python and Ruby libraries are optimized more towards their languages and will give a higher top-line."He also argues that JRuby, despite being regarded as a highly productive language, offers the most challenges for a Java developer:
"Given its closer functional ties, the learning curve for Ruby is highest of the three. It also has the same issues around the Java and native libraries. I honestly think that, once the curve is passed, JRuby could offer the most productivity. I've been nothing but impressed by what I've read about Ruby in that regard."
4. Available web frameworks. A strong vote for JRuby:
"With its direct port of Rails, JRuby seems to come out on top here."Jython is considered the weakest of the three:
"While CPython has some great options, Jython went nowhere for two years. The main cause of this is two-fold: Jython's current version is 2.2.1, whereas CPython is 2.5 and so many frameworks require compiled C code for performance."
5. Community support: Jensen feels that all three languages enjoy excellent community support but that Groovy has a slight edge:
"As the JVM is the only target for Groovy, the entire Groovy community is the JVM community. This obviously has some significant advantages for people looking to deploy on the JVM. It also seems to be picking up a lot of mind-share as the defacto 'Java Scripting Language', which is helping that community."
Of course any such assessment is to some extent subjective. It is also very much fixed in time - for example the increased activity around Jython, further bolstered by Sun's recent hiring of Frank Wierzbicki and Ted Leung to their team, should improve Jython's web framework status in future. Jensen's post does though provide a useful starting point and set of base criteria for architects or developers facing a similar decision.
Hibernate without Database Bottlenecks
Rainmaking - IBM's software virtualization strategy (Jerry Cuomo CTO blog)
IBM software architect eKit: Grady Booch podcast, whitepapers, articles
The Agile Business Analyst: Skills and Techniques needed for Agile
Guide to Calculating ROI with Terracotta Open Source JVM Clustering
This is going to be the same sh*tty race as that of Java Web Frameworks at the launch of JSF. Meaning: there'll be no clear winners and all the consultants, in order to mint money, will conclude that each JVM lang is tailored for some specific need. IMO, the end result will be that there'll be no Java replacement lang and Java's life will be extended for further 10 years, as happened to classic struts framework. This will be highly detrimental for the whole damn software industry.
It is just rails. And JRuby is just ruby.
Would the software industry be better off with a lack of choice?
Sun just hired two key developers that work on Python and Jython. You can read all about it at Tim Bray's blog. This will undoubtedly promote Jython's state and add proper Python/Jython support in NetBeans.
As for Python web frameworks on the JVM see : http://www.infoq.com/news/2008/01/django_on_jython
It is really interesting that the performance left out from the review, I think one of the most important factors in dynamic languages on JVM, is their performance. And AFAIK all of them sucks; but the question is which one sucks less?
I actually just did a micro-benchmark (completely unscientific) of some Java vs. Groovy code parsing XML. Conclusiong: Groovy was slower to execute but quicker to write:). http://www.juliesoft.com/blog/jon/index.php/2008/03/10/groovy-micro-benchmark/ Jon
As the original author, I've been surprised by the reaction this post has gotten. To reply to some of the comments here: @Neale: Of course, you are right. I put it in the "port" category for the same reason I would many of the Python libraries for Jython. Many libraries in Ruby have components written in C that will not work in JRuby. @Zeev: Personally, this was the most exciting news I've heard this year. I love Python and am looking forward to it getting more love on the JVM. PyPy is also doing very interesting stuff with its ability to target the JVM. @Performance: I didn't do anything with performance because I didn't feel I would be able to extract any meaningful data. I did look through The Computer Language Benchmark Game, but I didn't feel that was representational of the web applications we'd be using it for. We also feel similar to the Python/Ruby communities' use of C, in that, if we see performance problems, we'll look at those as areas to re-write in Java.
Adidas Ayakkabı, Boot, or Nike , UGG Bot, Online Shoping, Nike Shophing, Turkey Nike Online Giyim Adidas Ayakkabı Nike Ayakkabı Adidas Ayakkabı, Boot, or Nike , UGG Bot, Online Shoping, Nike Shophing, Turkey Nike Adicolor UGG Bot kurye of madeni türkey, Web design, Web devolopers, Google Adsense, google adwords or Shoping, Lojistik kurye zorlu kurye google reklam google kayıt google adwords arama motoru kaydı arama motoru kayıt reklam alışveriş haber google kayıt vinç seramik gavurlar adult forum sex porno adult erotik seks web tasarımı web tasarım web yazılım web hosting büyütücü 89 redtube porno sex seks penis büyütücü seks vprx erotik kurye kiralık araba Rent a Car Kiralık Araç Kiralık Otomobil alışveriş kurye kurye kurye kurye kurye motorlu kurye moto kurye e-ticaret e-ticaret e-ticaret sistemi sanal mağaza e ticaret akıllı e ticaret eticaret paketi or Business Sektöres Supporting Web sites or seo search engine optimitations web site
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.
Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.
David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.
Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.
Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.
Henrik Kniberg talks about 10 possible reasons to fail while doing Scrum and XP. Maybe the team does not have a definition of what Done means to them, or they don't know what their velocity is.
This article outlines 9 principles Marc Lammers discovered while building the world’s best field hockey team, mapping them to software development practices.
8 comments
Reply