Java is Dead! Long Live Python!

Version 3.0 of Python has been released. Notably Python has again done something Java has long resisted: it has broken backwards compatibility with Python 2.x. Notable fixes include a much saner string processing model based on Unicode. I am told by my Pythonista colleagues that a lot of other weirdnesses such as the print operator and the meaning of parentheses in except clauses have been cleaned up as well. Though I don’t expect all Python programmers to upgrade immediately (and version 2.x will be maintained for some years to come) version 3.0 is clearly a simpler, better, saner language than version 2.x that will enhance productivity and make programmers’ jobs more fun. Bravo for Python. This is clearly a living, evolving language.

Java by contrast, is dead. It has at least as much brain damage and misdesign as Python 2.x did, probably more; yet Sun has resisted tooth and nail all efforts to fix the known problems. Instead they keep applying ever more lipstick to this pig without ever cleaning off all the filth and mud it’s been rolling in for the last 12 years. They keep applying more perfume when what it really needs is a bath.

Backwards compatibility was maintainable and useful through about version 1.4 of Java, but it completely broke down in Java 5 when autoboxing and generics moved the core language beyond any hope of comprehensibility. Autoboxing was a misguided effort to paper over Java’s early decision to have a segregated type system for primitives and objects. It was Java’s Plessy v. Ferguson decision that pretended primitives and objects were separate but equal; but the claim was no more true in Java than it was in American jurisprudence. A separate primitive type system may have made sense in 1995 when CPUs were slower and virtual machine technology was not as advanced. Today primitive types just complexify the language to no particular benefit. Autoboxing would not have been necessary or even considered were backwards compatibility not worshipped beyond all other gods.

Generics are another case where backwards compatibility took a good idea and warped it into something horrible. Multiple design compromises were made to enable genericized code to run in older VMs, most notably type erasure. Then, in the end, binary compatibility was broken anyway. However no one went back to the drawing board and considered how much simpler and more powerful generics could be if they redesigned without worrying about backwards binary compatibility.

Closures, if added now, would only make the situation worse. Closures might be a nice addition to the language if and only if Java simultaneously removed inner classes and made all other syntactic changes necessary to support true closures. Otherwise closures will just be generics squared. New features simply cannot be added on top of the current weak foundation unless we’re willing to go back to the drawing board and take things out as well.

I can’t think of another major language as old as Java that still attempts to maintain compatibility with version 1.0 of itself. In fact, I can think of only one language that attempts that (C#), and that one’s half Java’s age. Unless we’re willing to make the hard choices and abandon the legacy as Python has, Java is doomed to the fate of C++ and Cobol: a tool for programmers with long white beards who grew up with the language and have learned all its arcana by gradual accretion and who spend their lives maintaining code written a decade or more ago. Meanwhile a new generation of programmers will abandon Java in favor of more nimble modern languages like Python just as we abandoned C++ in our youth in favor of Java. (Seriously: is anyone under the age of 30 actually reading this site any more?)

Admitting that you have a problem is the first step to recovery. Java has not yet admitted that it has a problem. The language is too big, too complex, and too baroque. Trade-offs that made sense in the era of single core Pentium II’s, 100Mhz processors, and 32 megabyte memory spaces no longer apply. Backwards compatibility has become a millstone around Java’s neck. We’re deep and sinking fast. Until this millstone is cast off, and we correct the mistakes of the past, no further progress can be made.

It’s hard to believe that I first started saying this over five years ago, and absolutely no progress has been made in that entire time. In fact, matters have gotten worse. Maybe Java is a lost cause, and it’s time to fork and replace the language. If nothing else, Java proved that’s possible. Just look what it did to C++. Perhaps it’s time to repeat the experience.

94 Responses to “Java is Dead! Long Live Python!”

  1. Barry Says:

    Yes. Python is just a snake.

    But, it happens to be a snake favored by companies ,like Google.

  2. Rushen Aly Says:

    I think, with GIL limitation Python will not live so longer in this multicore century. Java will gain its power again with multi cores. I hope wizard of Oz can help python…

  3. Liam Knox Says:

    This is article is particularly brain damaged. To claim Java is Dead is just insane. Sure it has its problems but the core fact is it is the most successful industrial strength lanaguage on the market. This is shown in adoption in even industry, front to back. People actually think about maintaining backward compatability seriioursly , unlike this author. Python is just another one of these Toy language , Ruby , Pearl , Php etc that find a niche in some areas but are no good for hard core distributed based computing and fall apart becauase they lack structure in many fields.

  4. The Java Developer’s Dilemmia « Echo One Says:

    […] for a long time and you are happy to be the one maintaining the legacy apps in their twilight. Elliotte Rusty Harold has it right in the comments when someone says that there are a lot of Java jobs still being […]

  5. chromatic (chromatic) 's status on Wednesday, 29-Jul-09 07:45:17 UTC - Identi.ca Says:

    […] Lessons for !perl 5 from !java: http://cafe.elharo.com/programming/java-is-dead-long-live-python/ […]

  6. Nathan Says:

    I must say, you’re quite wrong is your Java 5 assumption of breaking code – for one thing, you start by complaining it breaks downward compatibility, and then a few sentences later you complain that there even IS software complexity. I’ve compiled code from as far back as Java 1.1.8 without ANY issues. Seems rather backward compatible to me – not too sure what you’re referring to there.

    Generics? Doesn’t break anything. If you don’t specify the type to use, it defaults to the top-most generic type anyway. Doesn’t break anything, but adds quite a lot of usefulness if you CHOOSE to use it. Not too sure what your issue there is.

    As for closures? Who cares? Overrated. Anonymous classes work just fine, and are more predictable anyway. JavaStubs uses it to great effect without the need for the alpha-and-omega that is closures.

    As for complaining about it’s size – okay, fair enough, but Sun had to do that to expand the basic offering of the core language. It’s called being feature rich.

    Finally – dead? Sinking fast? Maybe you should actually evaluate the landscape before making absurd statements:

    LangProp.com
    TIOBE
    Ohloh.net
    Indeed.com

    My sources show a language that’s in a very healthy state, usage-wise. Love it or hate it, there are still plenty of things you can do in Java that you simply cannot do in other languages.

  7. sj Says:

    Are people still using python?

  8. Mike Says:

    I read most of this and I’m 47 year old(over30).

    Actually i’m glad they keep Java backward compatible instead of breaking everything as other languages do; i have to keep putting out software and not fixing incompatible code which would make be late getting home each day.

  9. Akintayo A. Olusegun Says:

    and I used to respect this guy, this post is a blunder man.

  10. Java Worker Says:

    I develop Java code for companies in sectors such as finance and insurance. These companies usually have millions of lines of Java code, a lot of the code is often quite aged and has been through the hands of many programmers. In spite of this the code in general is surprisingly maintainable and extendable. I attribute this charactaristic to the general traits of Java code. Java code is generally very verbose and readable, dosent allow too many styles of code but still has a good balance of expressibility – something you learn to love when you dont have the luxury that smaller projects have to start from scratch. Java applications generally have very good error handling and the code is robust. Java programmers have for more than 10 years had a strong tradition of documenting and using Design Patterns – it makes me easily recognise the the design when I have to maintain and extend other programmers code.

    What makes Java so maintainable and extendable is also about the staggering availability of APIs, Frameworks, solutions and tools. I have never had to tell a customer “it cant be done” or “it can be done but first I have to reinvent the wheel”. If any changes were made to Java suchs that it was no longer backward compatible I would stand to loose what… 50-90% of all those APIs and Frameworks available today?? and Java would become just as useless as Python, C/C++ and many other languages for building enterprise scale systems. It also deserves mention that Java a few years back entered a golden age of development tools – can any other language boast a lineup like netbeans/idea/eclipse/jdeveloper?

    Why would the “warts” of the java language such as primitive types have any bearing on its future? Python has different warts – so what? My customers are conserned if they can keep extending their codebase, if it will scale to twice as many users next year, if developers are sufficiently skilled/certified/available, if the brokers pushing the developers/consultants to customers know what they are selling, if the platform has good tools to enable productivity. I have no particular desire to code Java for the rest of my life but I dont expect Python to challenge Java in any near future. The only way to kill Java through the language design itself is to stuff the language with so many concepts (functional programming etc) that an average joe programmer will find it too complex to extend the code I leave behind.

  11. dhruvin Says:

    I m 20 years old…Fresher currently working on Struts & Hibernate..and one of my frnd went for python and he is regrating it due 2 no jobs in it..i just wonder what is the future in java struts hibernate etc…wat shuld i do for future??… ๐Ÿ˜•

  12. Emil Koutanov Says:

    Dear author,
    When you say “Today primitive types just complexify the language to no particular benefit.” it shows that you have no understanding of performance computing. What facts can you present to back you claim?

    Primitive types are “primitive” insofar as they don’t require the instantiation (and subsequent destruction) of an object just to represent a scalar quantity that may be only 4 bytes wide. To employ full class semantics when all you want to do is to read to and write from a 4 byte contiguous chunk of memory is like killing a flea (not even a fly) with a very large sledge hammer. In terms of detrimental effects on performance, compile and run the following code:

    public class AutoboxBenchmark {

    public static void main(String[] args) {
    final long start = System.currentTimeMillis();
    final long RUNS = 1000000000;

    for (long i = 0; i < RUNS; i++)
    add(i, i – 1);

    final long took = System.currentTimeMillis() – start;
    System.out.println(String.format("%d runs took %.1f seconds", RUNS, took / 1000f));
    }

    // private static Long add(Long a, Long b) {
    // return a + b;
    // }

    private static long add(long a, long b) {
    return a + b;
    }
    }

    First run it with the method that uses primitives, and then with the one that uses object types. The performance difference is more than substantial.

  13. Elliotte Rusty Harold Says:

    Emil,

    You’re demonstrating ignorance of modern compiler and optimization technology. Primitive types are primitive in that they do not support subclassing, method invocation, and other features of objects. How they are implemented is a detail. There is no reason the code you present cannot be implemented with object types that do not require allocating more than eight bytes per long. Indeed, if Long were the only type a good compiler would produce *identical* byte code to what you’d get from compiling the above. javac just isn’t that good, and the language spec doesn’t really allow it to be that good. ๐Ÿ™

    The code you present can be quite fast in languages with no primitive types such as Eiffel. Java doesn’t do this for reasons of backwards compatibility with a language designed 15 years ago. Do not confuse the limitations of the Java VM with fundamental issues. Java made compromises in its type system it shouldn’t have made because its inventors weren’t sufficiently familiar with the state of the art in object oriented optimization. The state of the art has only advanced in the 15 years since Java was released. It is precisely Java’s refusal to change the language to support modern constructs and optimizations that killed it.

  14. Objective P is like a neutron. Says:

    Hi,

    Whell i dont tink java is dead at all(it is more like a unstable finnacial chart that goes down and then upp like a rocket), still its in use all the time in diffrent companies.

    Java aint COBOL(alltho some pepole seems to se it as COBOL when looking at java)

    I tink that java could need some cleanups(as many other have stated), but the bottom line is that it works for the present tasks avable today, i tink i just need to say the old but so true phrase “a professional programmer is by widely defenition one who charges pepole/companys for money in exchange for some code” it dossent nessesarelly saying that this programmer is good. infact i dont know any by defenition good python programmer(currently) all again(so called top-notch) python programmers extensevly use fuctions that in the end is (native) so basicaly its uncontrolled C since they ofently dont know exactly what C python will use in the background (maybe its a little arrogant to make this to be just C but in general).

    Young pepole especially(i am a young man,i am also an exception to this, i am 20yrs old atm) seem to tend to see java and old languages as “BAD OLD SHIT” becouse it wont produce a pretty game or other tings in a fast and to the eye a clean way. As some has stated Python has its advatages/disadvatages, but in the Real World python or any of these other Candy languages dossent seem to cut it becouse of triveal reasons like MTBF factors witch i think is a big concern that pepole has left out in this discussion/review when it comes to python, yes Java can be Resource consumeing(with a extra ! on the R) but the good advantage is that it IS exceptionally whell working in Real Time applications and in general systems and so on. python however(not saying that python is bad in general) dossent cut it i dont know any programmer that works withtin big coporations or anyting critical that says “you know python works” take mobile phones for example a common ting i hear from the industry is “shit we let some super python programmer do some python code still ist explicitly buggy alltho the programmer is the best you can find for money” then the end of the line is “Woops instead of hireing a programmer for a hire salary that would give us a direct working emedded java like system for a total cost of $xxx the total cost now with all fixes is $xxxxx. i think this resembles alittle of the atitude when ADA arrived, the line is why use C when you could use ADA that was from a practical standpoint undefinable many times better, whell i heard of some old pepole back in those days the old and true saying “it is not a technical problem it is a political problem reffering to the internals of the company” resulting in code that took more time to get working and in the end costed undefinable more $.

    As a coclusion i would say that yes Candy languages is prefectly fine when it comes to short lived applications like a homemaid program that runs a calculate once then display fasioned program but its not suited for most programs that is programs who will have a runtime lifespan for hours or so. or applications that will cope with extensive ammounts of third part extensions, embedded devices is an excelet example in that matter.

    I recomend Java over python in terms of “lifespan” and “general concistecy”

    I recomend Cady lanuages (python and so on) for maybe general personal day use NOT FOR SERIOUS APPLICATIONS(tink resonable here)!

    And to all young programmers lets say <30(college educated or not) try out all common languages and get your own opinion in terms of (feel/style and sutch) not in (technical specs becouse most pepole doessent understand the tings under the hood really!, that icludes college students in various programming flavours trust me) please dont ask all the time WITCH LANGUAGE IS THE BEST! OR SO! its just so personal and location and purpose dependant.

    Sorry for all the bad english and sutch im tired as hell.

    My favorite langs are(ASM,Fxx,ADA(defenatly best language in exsitence(with ASM OFC) yet but it could need some extra librarys but that will come ie for graphics)

    Languages i can understand exist becouse of the human factor/time (C,C++(altho C is way cooler than c++),Pascal and so on)

    Languages i dont use since practical problems mostly requires more reability is: Candy langs(python and so on).

    Last but not least Python in real life may save you time in the moment of programming(if your not a vet ofc) but in the end all candy langs cost you more $ than java like langs becouse of various mentioned problems.

    Yes i personally beleve that Python is as most other langs a Hello – Goodbye story,(a sleasy lovestory).

    Best Regards Mr. R

  15. Objective P is like a neutron. Says:

    โ€œ”””Woops instead of hireing a programmer for a hire salary that would give us a direct working emedded java like system for a total cost of $xxx the total cost now with all fixes is $xxxxx.””””

    Woops let me clarify it should be higer not hire

    And when i mean back in the old days i mean the pepole that programmed in that time period not ME

    thats a woops.

  16. Young FOOL! Says:

    WEEERY long post there Obj P, alltho i am guilty of the young ppl problem,
    I LOVE PYTHON REALLY! but i never get superbe applications out of it NEVER!

    Its perfect for nice @home tasks ie smal physics graphs.

    I tryed java but i tink that it is quite hard ecspecially all interfaces and inheretance moments.
    Alltho i tink this Author is a nutcase: java is dead now that is indirect advertiseing.

    Only major problem i have with Python is that to to most useful tings i need to get that extend this and so on and yes my java programs works mutch better than my pythons, but dont get me wrong i love my snakes!

  17. ansi_c_still_rules Says:

    After java, python and come and go, C will still be around. And why is that? Simple. Because it’s not a huge, big bloated language. It’s simple and you can’t match the speed. Yeah I know.. some of you weird java nuts still will claim that java beats C++ or even pure C. fact: A hand-tuned machine lang. program still can’t be beat. And a highly optimized and tightened C or even C++ program is as close as you’re going to get to that and still runs circles around the best written java programs.

  18. Emil Koutanov Says:

    Dear Elliotte Rusty Harold

    >There is no reason the code you present cannot be implemented with object types that do not require allocating more than eight bytes per long.
    No, no reason, but having all other objects point to this object that is simply a wrapper for an 8 byte long (additional dereference) is rather excessive, wouldn’t you agree. If you think boxed primitives are sufficient, you need to get some experience with signal processing.

    >It is precisely Javaโ€™s refusal to change the language to support modern constructs and optimizations that killed it.
    Wake up. Java is the perhaps the most relied on language in the world. One of the reasons this is so is because Java is not a “dynamic” language – its a language that is built upon solid compile time checking as opposed to Python that is scripting language – nothing more, nothing less. How many critical applications (banking, finance, etc sector) are written in Python.

  19. Elliotte Rusty Harold Says:

    Emil,

    You still don’t get it. There is no wrapper type. There is no extra overhead. Longs and ints can be implemented with full object semantics without any additional runtime overhead compared to how primitives operate in Java today. Autoboxing as implemented in Java today is way behind the state of the art. Eiffel has been doing this for over a decade. All you need is a smarter compiler and a slightly different language spec. No VM-level changes are required.

  20. Emil Koutanov Says:

    Hi Elliotte,
    I’ve been long enough in the language and compiler design business to understand what you’re saying. Yes, we don’t need to box types to give them object-like semantics. But it appears to me that in order to distinguish Python from Java, you are hanging your hat on that, and a couple of other esoteric things.

    What you’re lacking is the understanding of the broader picture. Gone are the days of “cowboy” style software development. When you have to write a lot of software (and I’m talking about project scope varying from 100 KLOC to well over a milllion LOC), the language selection is crucial. Java facilitates software evolution because of a number of things, some of the most important being compile time type safety, especially since version 5. The more problems can be found before deploying – the less defects are likely to manifest themselves in production. Ever wondered why ADA is a milspec language, and why Java is found in just about every new financial app in the world? This is what many proponents of highly dynamic and loosely typed languages like Python and Ruby fail to realise. They want flexibility, but what they end up with is unmaintainable chaos. Ask yourself one question: would you fly in a plane with its avionics suite written in Python?

    I don’t berate Python. I think it’s good for what it was designed for. Certainly, building a console based app to do something quick on Linux in Python beats Bash any day. But let’s not take it outside its “flight envelope”.

    Oh and just one more thing. The statement “Java is dead” is among the most absurd I’ve heard in a long time. Please don’t say that again.

  21. Burningk Says:

    I have to disagree with this title. Just in, new Blu-ray discs and DVD players and set top boxes have been staged on Java. I believe Java is far from dead. In fact it’s almost like a “baby boom”.

  22. Hello Says:

    Java will always be better than Python!

  23. Hello Says:

    I agree!

  24. Hello also Says:

    I just agreed with myself

  25. Martin Wildam Says:

    In reply to ansi_c_still_rules:
    > some of you weird java nuts still will
    > claim that java beats C++ or even pure
    > C. fact: A hand-tuned machine lang.
    > program still canโ€™t be beat.

    This is not necessarily true. I talked to a member of the JVM developer team and discussed that. Fact is: Most programmers (even C++ programmers) do not really write optimum code – they can’t, because optimum code would – just to give an example – involve a lot of copy & paste instead of function calls because function calls are expensive. That would cause the code to be very awful and not maintainable. On the other hand the automatic optimizations done by the Java compiler or JVM often do a really good job because on compilation such optimizations can be done. Next: The JVM does optimizations at runtime based on application use (“warmup phase” for server processes) – that means if two customers are using your application in different ways, different optimizations might be done. That dynamic is not available in your C++ code optimized by hand.

    Of course, if you know exactly what you are doing you might outweigh AI compiler optimizations – but this is not what in the real world happens too often. IMHO: Basically C++ and Java are both very fast and faster than many other languages (if not faster than most). With both languages you cannot be really wrong if performance is important for you (except for small commandline apps where Java does not really fit).

    Read more about Java performance at popular Java myths and Java applications on the desktop.

  26. g Says:

    but how about now? since oracle already take over Sun…

    sigh… i feel sad when someone said ‘no java programmer’ here… ๐Ÿ™

  27. _ Says:

    C is the language of hackers.
    Bring it to the point.
    Java and python all comes later in life.

  28. Burningk Says:

    Java is still around. Android and BlackBerry smartphones run on Java. Java just keeps winning in the popularity contest. Have a Cup of that.

  29. Mike Says:

    I think the reason why he has chosen to goto python because it supports UTF-32. Java only supports UTF-16 at the moment. Python coding is for the 80’s. Java is newer, why work on python when Java is much newer? If any language that is good why don’t they just bring back Assembly Language? Takes longer but the coding is the fastest. I’m sure thats why Linux is widely used and as well for Playstation.

  30. antred Says:

    Abandoned C++ in favor of Java?? Speak for yourself, lad. I’d rather poke my eyes out with a rusty nail than go anywhere near the abomination that is Java.

  31. richard bucker Says:

    I’m not sure if the point has been made, however, as wonderful as P3.0 is; until it is included as the default python in most OS’ or until python truly supports multiple concurrent versions in a same model it will be very hard to move on. Perl will have the same problem.

  32. James Says:

    Although i am not a Java advocate (a C++ programmer ) i have to say this is most idiotic, obscure and funny article i have ever read. Saying Python (or any dynamic language ) is better than Java (or any static language) shows the lack of maturity/experience on your part and it seems you are suffering from fanboyissh syndrome ( common among scripting language programmers).

    “Java in favor of more nimble modern languages like Python just as we abandoned C++ in our youth in favor of Java.” Abandoned C++ ??? wow thats news to me http://www2.research.att.com/~bs/applications.html

  33. Mark Says:

    *ROTFLMAO* Classic arrogant blogger without a clue.

    Android is Java, Java is Android. Ironically after almost 2 decades, Java is finally on devices for which it was originally intended.

    I found this page because I was looking for a info on Python and a dead(). The book I am using to learn Python, for fun, made the comment that if anyone told you NOT to learn Python 2 you should ask them if all of their production code was P3. If not, wait the 10 yrs it would take them to convert it, and by then P4 would be out, and learn that.

  34. Adrian Says:

    I hate Java not for the language but for the clear fact that HR and dull-witted managers expect one to know the latest secondary APIs or libs whenever they come along. A competent developer would have seen problems, suggested solutions and written corporate class libraries years before they were officially released. Whether its thread-safe and unsafe collections or web frameworks prior to that horrendous EJB crap.

    With C or CC++ that obsession with the latest and greatest doesn’t exist. I think its because no single company is guiding C/C++.

    Java is not only a language but a product of a distorted marketing machine. It offers slogans and branding all the way along. That tricks feeble managers and programmers faster than pharmaceutical reps convince doctors by way of golf and hand-jobs.

    Java, stripped of the bullshit is actually a great language.

  35. Peter Says:

    I used to code and publish software products for both MVS and the Unix platform in C and C++. About 1996 I tried to switch to Java, but it was extremely difficult. The C language takes significant skill to do right, and you do have problems on projects with large numbers of people due to different coding techniques…..so anything that is runnable anywhere and makes our job easier – I’m all for. That said, our company decided to switch to java, but I just never “got it”. Neither did the other guys on our team. I completely understand OO techniques and it was fairly straight forward using C++, the first problem was that I just couldn’t remember and digest all the different types of file access methods. While it is tedious in C, java just replaced it with a zillion different types of file access methods. What was even worst, it seemed that the problem I was trying to solve was buried under all these new concepts that I started losing focus on what it was I was trying to solved. I’ve been programming MVS assembler, cobol and now (CC++) wiith ease MVS and Unix for 12 years (as of 1996), and when I arrived at java, I hit a brick wall. For many years, there was this huge advertising campaign by Sun touting all these features that I couldn’t figure out how to use, or find a situation where I could use them. Some people on this post say they love the language, but I even had trouble with that. By far, the absolute best language ever invented was IBM’s rexx, and now netRexx on the java platform. I’m considering using it going forward, but the downside is it doesn’t have it’s own file handling or socket (network) abstractions that say Python does, so it sort of makes you use java’s libraries as they are.
    I don’t know you guys do it with java….perhaps I as born and raisded in a different era. Strange though, Mike Cowlishaw (inventor of Rexx/netRexx) seems to understand it, so maybe I’m just burned out.
    Good luck to you.
    P

  36. xxx Says:

    Java died when Oracle bought Sun.

    http://www.reuters.com/article/2012/04/17/us-oracle-google-trial-idUSBRE83C0KP20120417?feedType=RSS&feedName=topNews&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+reuters%2FtopNews+%28News+%2F+US+%2F+Top

    Best to use an open source language.

  37. anafa david mudi Says:

    Hello guys, i really appreciated the discourse for and against python. However i wish to ask a question, i wish to learn how to use my knowledge of python to develop andriod apps, what do you think? is python made for that also since i heard that Java is better for it. thanks

  38. Lukasz Says:

    Python is a scripting language and good for small things (like a Basic was a decade ago). Lack of compile-time checks precludes it from being used in more complex applications. If one needs a dynamic language, why not to choose Groovy, which provides type safety?

  39. Getters and Setters: Code smell, Necessary Evil, or Can’t Live Without Them | Ask Programming & Technology Says:

    […] seems to be a common occurrence with Java, less so with Python. I’m beginning to wonder if this is more of a cultural phenomena (related to the limitations of… As I do not program in Java (currently by choice) I cannot make that […]

  40. Eliphas Grote Says:

    It’s entertaining to read this old post from the far future world of 2014. Your enthusiasm for breaking backward compatibility would perhaps have not been so great, had you known how things would turn out. People were (unsurprisingly) reluctant to rewrite huge existing codebases, and stuck with Python 2. So even though I know Py3k is a much nicer language, I’m still writing Python 2 because that’s what my users run and that’s what the libraries support. Python 2 EOL has already been extended by 5 years to 2020, and will doubtless be extended again. (Either way, enterprise distros will have to keep supporting for a few years beyond official EOL.) Meanwhile, PEP 466 has cautiously unthawed the feature freeze on Python 2.

    So, yes, keeping language warts for the sake of compatibility is annoying. But Python 3 provides a sobering glimpse of what *would* have happened had Sun followed your advice. Yes, you get a much nicer shinier language, but unfortunately most people have to keep using the old one.

  41. mithun Says:

    python is better than java

  42. Python:What kind of things can be done with Java but not Python? – IT Sprite Says:

    […] Java is Dead ! Long live Python […]

  43. Rahul Says:

    Dear Author !

    1.Java is used in billions of devices.

    2.Biggest projects like SAP,Hadoop,SalesForce,finance,insurance projects are developed in Java and we can not replace or redeveloped or migrate this projects into another languange and we dont have resources to do this task as it took around 20 years to reach at this stage.

    3.Why this projects used Java ?
    because it is stable, open source,plat form independant,having online community support in short Java was most beautyful in those day.

    4.I agree with you that charm is not as it was because
    => As far web apps are considered there are lot of options like asp.net (is going to open source and cross plat form),ruby,node.js.
    => As far android is concerned now xamrin is better choice as it can used to create app for windows/ios/android base smart phones.
    => The biggest reason for worry though java is open source , cross plat form , java projects needs time to get developed,need more inverstment in development,also maintence cost is more.
    => Becoming java expert is quite tough as there are different frameworks,different IDE’s vast subject.

    – Thanks Rahul Jagtap.

  44. Jucedupp Says:

    Reading this more than 12 years after it was written. And the author was right.