`
love~ruby+rails
  • 浏览: 849434 次
  • 性别: Icon_minigender_1
  • 来自: lanzhou
社区版块
存档分类
最新评论

Java is dead, but you'll learn to love it

阅读更多

A favorite hobby-horse among various programming-related communities is to talk about why "Java is dead", and further, that programmers working in the Java ecosystem should really look for greener pastures elsewhere.  You see these sorts of posts pop up on proggit, for example, oftenenough for it to get old.  That's a lot of hot air, with plenty blowing in the other direction from various folks that have been pushing hard for significant improvements and changes to Java. Both sides are wrong, though, because as a result of its success and a series of historical accidents:

Java-the-language is dead.
Get over it, and realize that because of that fact, you'll probably come to depend upon Java more than you ever thought possible.

The JVM is probably one of the most vibrant platforms for developing new programming languages there is, in part because of the status of Java-the-language.

First, let's settle the premise. In comments on one of his recent blog posts, Joe Darcy, one of the fellows the heads up Sun's management of the JVM and JDK (I'm not sure of his exact title and portfolio), said a couple of key things about the never-ending saga regarding closures in Java:

There are millions upon millions of Java developers who would have to learn about closures if they were added in the platform.

...there is far from unanimity in the Java community on the underlying choice of whether or not closures would be an appropriate language change for Java at this time.

OK, there it is, closures are never going to be added to the Java language.  Done, and done.  And if closures aren't going in, then you can surely bet that other things aren't going to make it, either.  To further make the point, Joe commented on an earlier blog post of his here 1 , saying in reference to a question about why the Java standard libraries don't slough off deprecated APIs:

To date, we have valued continued binary compatibility with code calling the deprecated elements more than cleaning up the API.

This sort of stuff pisses a lot of people off, and leads others to propose mildly absurd things IMO,like forking the Java language into "stable" and "experimental" versions. This a lot of wasted effort.


It seems that Sun decided long ago, through pressure from its customers and developers, that compatibility is more important than innovating at the language level. With that, managing Java and the JDK became more an exercise in stewardship than anything else. The quotes above from an authoritative source are proof-positive that this is the case.

That may make the Java language dead with regard to features, but it's hardly useless – it's simply transitioned to be the stable "systems language" for the JVM that a large swath of programmers (who Sun likely correctly identifies as being uninterested in things like closures, syntactic improvements, etc. etc.) happen to use for applications as well.

Trading off "progress" for stability bestows upon Java at least two characteristics that are shared by other systems languages:

  • screaming into the void about how improvements and changes should be madeyesterday is generally pointless and irrelevant
  • knowing that the language is essentially fixed for years to come means that it fades into the background as a very useful artifact for those that want to build on top of a system with well-known characteristics

A side effect of this is that the JVM is a very fertile spot for new(er) languages, where language implementers don't have to worry about their building blocks being taken away or changed radically from year to year 2 . At the same time, the JVM itself has been getting tweaked and tuned heavily under the covers to support non-Java languages, not the least of which is Sun's JavaFX, their entry into the post-Java JVM language fray 3 . So, you want your fork of Java that pushes boundaries?They are many and plentiful, so go choose one, already.

The upshot of all this is that it's more likely than not that over the course of the coming years, your life (and quite likely your professional life as well, if you're involved in software) will come to rely upon Java, the JVM behind it, and many different other language stacks built on one or both of those technologies.

Of course, interop between these languages is a concern: only APIs matching Java's binary signatures are accessible by all languages, there's no standard interface for closures, there's no standard (sane) numeric tower, etc. etc. These things are frustrating if one happens to be working in a polyglot environment, but I've no doubt that necessity will draw the larger players in the JVM language space together to establish certain baselines to ensure interoperability.

In the end, we might have all been better off if the current state of affairs had arrived years ago. A steady drip, drip, drip of Java language improvements serves only to keep developers tied around what is functionally a frozen language, and away from superior alternatives (on the same JVM platform!) if they're so inclined to look up from their work. Since the state of play vis á vis Java-the-language is clear, maybe those that care so deeply about programming language productivity, innovation, and progress can set about enjoying the advantages of the future that Java has ensured for us all.

分享到:
评论

相关推荐

    《Java Servlet编程(第二版)》英文版 chm (含源码)

    It explains everything you need to know about Java servlet programming, from start to finish. The first five chapters cover the basics: what servlets are, what they do, and how they work. The ...

    Android代码-dante

    Originally I authored Dante in Pause, the project is now dead and I decided to open source it. This is the very first release of Dante, the api will (most likely) change for the better with successive...

    Is the phy layer dead

    ### 通信物理层(PHY)是否已成过去? #### 引言 无线通信技术自诞生以来,便被视为具有划时代意义的重要技术,被冠以诸如“无处不在”、“广泛存在”、“根本性”、“范式转变”以及“革命性”的标签。...

    KASLR is Dead Long Live KASLR(address space layout randomization).pdf

    此外,本文还提出了一个名为KAISER(Kernel Address Isolation to have Side-channels Effectively Removed)的新系统,它克服了x86架构的限制,提供了实际的内核地址隔离功能,从而保护内核地址信息不被泄露。...

    C# and XML Primer

    XML is far from a dead technology, so it is important to learn how best to use it in your applications when the need arises. What You Will Learn Gain the essentials of XML for C# development Read XML...

    Java APIs, Extensions and Libraries-Apress(2018).pdf

    Java APIs, Extensions and Libraries_With JavaFX, JDBC, jmod, jlink, Networking, and the Process API-Apress(2018).pdf...It is my sincere hope that this edition of the book will help you learn Java better.

    Raspberry Pi Robotics Essentials [Richard Grimmett]

    Chapter 3, Motion for the Biped, talks about how once you have the platform built, you'll need to program it to walk, wave, play dead, or perform any number of neat motion segments so that you can ...

    Learn.Search.Engine.Optimization.With.Smart.Internet.Marketing.Strategies 2018

    SEO 2018 is now updated covering the latest changes to Google's algorithm, and walks you through major updates and how to use them to your advantage. This book also reveals industry secrets about ...

    Java_ Evolutionary Dead End

    ### Java:进化死胡同 #### 概述与背景 在一篇名为《Java:进化死胡同》的文章中,作者布鲁斯·埃克尔(Bruce Eckel)深入探讨了Java语言当前面临的一些挑战及其未来发展的可能性。文章发布于2008年1月3日,正值...

    bib convert to endnote

    Once the program is running, it's dead simple. Select Open, pick a .bib file, then select Save, enter filename (.xml), exit. If there are bugs in the BibTeX file, or if some things can't be converted ...

    Android代码-Photo Effects

    android-image-filter some android image filters in some filter, I use NDK to implement to make it more ...It is dead simple, you can see magic in the following code: Bitmap newBitmap = BitmapFilt

    Java反编译软件JAD1

    If such file already exists Jad asks if you want to overwrite it. Option -o allows overwriting without confirmations. You can omit .class extension and/or use wildcards in the names of input files. ...

    TCP/IP Illustrated

    Richard Stevens TCP/IP illustrated is one of the best books you can ever buy to understand not only TCP/IP but also other fundamental protocols like ARP, DHCP, SMTP etc. The word 'Illustrated' is ...

    信息安全_数据安全_NTLM_Relay_Is_Dead_Long_Live_NTL.pdf

    信息安全和数据安全是信息技术领域中的核心议题,它们在保障个人、企业乃至国家安全方面发挥着至关重要的作用。NTLM协议(NT LAN Manager)是一种广泛应用于Windows系统的身份验证机制,但由于其设计上的缺陷,经常...

    INVERTERPWMcompensater.rar_Dead time inverter_dead_harmonic curr

    in order to overcome the practical zero of the current ambiguity of the system is proposed based on the two-phase stationary coordinate system under the feedforward dead-time compensation method....

    fast email verifier

    Not only does it show invalid addresses, but it can also remove them from the source list, creating a separate lists of bad addresses. ODBC support is included allowing FEV to work with any database ...

    the-walking-dead-season-5_java_WalkingDead_

    描述 "Java code is required to complete the test and test the software" 明确指出这个项目包含编写和测试Java代码的任务。标签 "java WalkingDead" 进一步巩固了这个观点,暗示可能是开发或分析与《行尸走肉》...

Global site tag (gtag.js) - Google Analytics