Slashdot Mirror


How Java Changed Programming Forever

snydeq writes: With Java hitting its 20th anniversary this week, Elliotte Rusty Harold discusses how the language changed the art and business of programming, turning on a generation of coders. Infoworld reports: "Java's core strength was that it was built to be a practical tool for getting work done. It popularized good ideas from earlier languages by repackaging them in a format that was familiar to the average C coder, though (unlike C++ and Objective-C) Java was not a strict superset of C. Indeed it was precisely this willingness to not only add but also remove features that made Java so much simpler and easier to learn than other object-oriented C descendants."

21 of 382 comments (clear)

  1. The Betrayal by tylikcat · · Score: 2, Insightful

    "...turning on a generation of coders."

    I'm glad to hear someone finally having the courage to admit this. Especially considering how widely it has been adopted as an instructional language and how many young people were betrayed by their institutions and communities at the very start of their programming careers.

    But I'd also like to hear more from the many people who've risen above these challenges and gone on to become developers even so. It may be hard. It may be traumatic. But it's good to remember that it's possible to rise above it.

  2. Re:20 Years by Anonymous Coward · · Score: 3, Insightful

    If you're trying to sell an app, it's your problem, not theirs.

  3. The COBOL of the 2000s by Anonymous Coward · · Score: 3, Insightful

    Yeah. When I saw in which direction Java was going, I thought to me: "thanks, I've had COBOL once, Don't need a second serving"

  4. Re:20 Years by jareth-0205 · · Score: 4, Insightful

    20 Years of write once and test everywhere! And now thanks to Android there are over 18000 distict Andoid platforms to test on too!! http://thenextweb.com/mobile/2...

    What you call 'fragmentation' I call 'variety'. And since Android app crash rates are actually lower than iOS ones (ie a platform with much lower 'fragmentation') then it clearly isn't the problem that you think it is...

  5. Re:I don't know why people still say Java is slow. by etinin · · Score: 4, Insightful

    On a slightly more serious sidenote, it's easy to see Java's popularity dropping, since Google seems to be dumping java for high performance javascript/dart development, as they have already been announcing for Android.
    http://arstechnica.com/civis/v...

    Linus has actually stated it in a way that is frequently seen as toxic. But, while C++ is one of my favourite programming languages, certain language features tend indeed to "rotten" people's brains, just like pre-GIT CVS+derivatives did to source control habits. And I find that Java is actually the perfect representative of that nowadays, not C++ (and even Linus is now commiting patches in C++) I don't know what you guys people but when I have to traverse a tree of 10 folders, and files have 10 lines and exist only for a single abstraction's sake, I kinda feel OOP, though a powerful tool, has been overused. When everything has to be an object just for a paradigm's sake, things can get kinda distorted. One of the greatest programming innovations is, in my opinion, MVC (or even MVVC stuff like Angular) is one of the greatest things that have been getting popular lately. By separating logic from models and views people are encouraged not to create stupid abstractions and use procedural programming where it is adequate and avoid performance losses.

    (proof that torvalds actually uses C++ if anyone hasn't seen that: https://github.com/torvalds/su...)

    --
    "I decided I could write something better than everything out there in two weeks. And I was right." - Linus Torvalds
  6. language is OK, programmers are terrible by Anonymous Coward · · Score: 5, Insightful

    I don't have any philosophical issues with Java, but the "simplicity" of it has led to software vendors thinking they can hire simple people to write mission-critical software, with terrible results.

    At work, we have several pieces of server software written in Java, and they are just awful. The RSA server, an auth server from Cisco, and others. They crash when the wind blows the wrong way. They bloat and need to be restarted every few months. One executable starts multiple network services on multiple ports. They rely on using dozens of threads with dozens of queues, and there is no way to inspect them. Logs show high volumes of Java call traces and error messages, even when the software is running fine. Sometimes components just stop working, we call the vendor, and the vendor instructs us to restart and/or reboot.

    With the RSA server, we had a massive outage one time because an admin kicked off a few reports. It turns out the reports hung a few threads, and took down the service for the whole enterprise.

    The Cisco server has the same problems: dozens (hundreds?) of threads with dozens of queues, and the synchronization among the threads just doesn't work 10-20% of the time.

    It's not just these servers. In a previous role, we had some Java middleware that translated DIAMETER RADIUS in a service provider setting, and that was it. That software blew up every month or two, and we had to fail the service open for all our customers.

    Terrible, flaky, unreliable software. Again, I think it's probably not the language, it's the shitty, shitty programmers.

    But, hey, it's job security for me!

    1. Re:language is OK, programmers are terrible by steelfood · · Score: 3, Insightful

      Any programming language could have stumbled into that phenomena. It just happened to be Java.

      If you threw a bunch of shitty programmers at something simple but low-level like C or complicated but high level like Haskell, these same programmers would turn out software that would completely fail to work. Java, by protecting the programmer from the internals of a system (memory management, pointer vs. value etc.), yet still being simple to write in, lowered the bar significantly for entry into programming as a profession. Anybody can write in Java because it's procedural and easy to think in, and most of the heavy lifting is done for them and it's a matter of stringing together the right libraries.

      You're right that it could've been another language besides Java, but said language would've had to have had the same intrinsic qualities as Java. I guess it could be worse and the defacto industry standard language could've gone to C#.

      It's both good and bad. As programmers, it makes our day-to-day job of writing and maintaining software easier. It also makes being a programmer easier, which is bad because shitty programmers will turn out shitty software, and will do it for cheap. It devalues our profession precisely because managers know they can hire shitty programmers that will churn out a working product. And by the time any maintenance is needed on it, neither they nor the original programmers would be around to deal with the mess, so it doesn't matter.

      --
      "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
  7. Java programmers? - don't make me laugh by Anonymous Coward · · Score: 0, Insightful

    I've found Java developers to be the most annoying people to work with, ever. Talk about ADD!! Must be because they're mostly millennials and don't have the patience to sit back and think about a problem opting instead to download dozens of third party components, in a heartbeat, then slapping the bloody mess together which gives then endless opportunities for refactoring. Nothing like coming in the next morning with to a huge list of changes to a system that was working but now all the other dependent components have to be reworked because someone discovered the refactor button and couldn't resist staying up all night.

    They thrive like bacteria in places that have weak or non existent development practices like code reviews - they especially love Agile (cough, vomit) development for obvious reason.

    Idiots all.

  8. Re:Plant? by Pi1grim · · Score: 5, Insightful

    >> Because Chrome is turning Java off and they're trying to make sure other browsers don't follow suit.

    >> Seriously, I see no NEED for Java any more. I probably have more Silverlight things I like to use than I do Java, and neither are vital any more.

    It must so wonderfull to live in a world limited by your browser window. Wonder how it's like. Have you ever wondered what do the servers run? You know, the same servers that show you all sorts of pages? Banks, Twitter, Amazon, eBay, LinkedIn hundreds of other high load sites and countless numbers of proprietary in-house internal systems? Let me give you a hint: definitely not silverlight.

    >> Java is dead

    You need to grab a phone at tell all those sites above I mentioned, also, while you're at it, don't forget IBM and Oracle, they'll have a blast.

  9. Re:Plant? by peppepz · · Score: 5, Insightful

    Java != Java applets.

  10. Easier to learn != easier to use by Simply+Curious · · Score: 2, Insightful

    I've tried to get into Java on multiple occasions. Each time, I get thrown back by the amount of boilerplate necessary, and by missing features.

    - No operator overloading. As a result, every container type is accessed differently. Arrays use []. Lists use At(). Hashmaps use Get(). Matrices, vectors, and complex numbers are absurdly verbose, because I cannot overload addition and multiplication.
    - Type erasure for generics. As a result, I cannot define different function overloads for func(List) and func(List).
    - Lack of first class functions. As a result, callbacks required the absurdity of implementing the Callable interface. This has been improved recently with the addition of lambda statements.
    - Lack of properties. As a result, I cannot expose anything as public, because I might want to add additional code at some point in the future. Therefore, I must have an explosion of getters/setters.

    I like the idea of having a sandboxed virtual machine. I like the idea of having a single version of the bytecode that can run anywhere. I just can't stand the language.

    1. Re:Easier to learn != easier to use by Simply+Curious · · Score: 3, Insightful

      - I would say that operator overloading in some cases is evil. In others, it is the natural thing to do. For example, linear interpolation between two vectors is much easier to read as "s*v1 + (1-s)*v2" than as "v1.multiply(s).add(v2.multiply(1-s))".
      - Yes, but by no means should I need to. In C++, I could pass all objects as void* and then include a tag to show which type it represents. I don't do so, because that is something that the compiler can handle.
      - Yes, which is why I mentioned it. The situation is better, but only in recent versions of java.
      - Generated code gets too complicated, because you need to look at each function and determine whether it is still identical to the generated version, or if it has been modified. If code is present, it should be present as the result of a reasonable decision.

  11. Re:Plant? by Xest · · Score: 3, Insightful

    You seem to be declaring Java dead, because Java applets are uncommon, and that Java desktop applications are uncommon. Both these things are true, but it still only tells an incredibly small picture.

    Java is still massively strong on mobile, in embedded devices, and for server side applications.

    There are a lot of phones, routers, ATMs, websites, and so forth still using Java rather heavily. It's a very long way from dead, it's still used at least in part to run key elements of some of the largest sites on the web - eBay, Amazon, Google for example as well as being a big deal in nearly all the world's banks and financial institutes. It does well in the academic world, and in the medical world, from doctors surgeries to big pharma.

    I hate Oracle, but I'm afraid as much as I'd like to see it, they wont be going away any time soon - there's a lot of money in providing to those sorts of companies.

  12. Re:utter crap language by gstoddart · · Score: 2, Insightful

    Well, if you only have a nice academic abstraction in a book which is the language ... sure, that's awesome and all.

    And then in the real world the platform, and its many variations, becomes an issue.

    It's been years since I wrote in Java, but we'd get the regular updates of the platform, which may or may not have broken something. You'd get every vendor having their own JVM, or their extensions.

    So you'd write a webapp for one platform and test it, and then someone would cram it into yet another proprietary variant which wasn't compatible. Which usually left the customer screeching that when you listed the platforms you supported, that it didn't work on the one they had which you'd never tested against.

    And don't even get me stared on the shitware which Java wants to install now. Sorry, Oracle, but we don't give a fuck about your stupid Ashole.com toolbar.

    So, yes, maybe in some perfect little bubble which doesn't depend on the platform Java is an awesome language. But in the real world, it seems like many things were a moving target, and that the platform gave you more sources of grief than the language.

    I've lost count of the number of applications I've seen which the vendor basically says "we are compatible with this version of Java, and nothing else".

    In that regards, as much as I like the actual language ... the platform can be a pain in the ass.

    I don't know what it's like now (as I said, haven't directly used it in years). But there was a time when there was so much fragmentation as to make the "write once/run anywhere" a really bad joke.

    --
    Lost at C:>. Found at C.
  13. Re:Plant? by DickBreath · · Score: 3, Insightful

    You seriously have no clue what Java is used for nor how huge its ecosystem is. For years and to this very day Java is always shifting between the number one and number two spots of most widely used programming languages. The amount of enterprise software written in Java is so large that Java may never go away. There are certain things that Java is very good at, which is why it is used. It's not perfect for everything. If there were one perfect language, everyone would already be using it.

    --

    I'll see your senator, and I'll raise you two judges.
  14. Re:20 Years by Pseudonym · · Score: 1, Insightful

    On iOS, you can pay $99 for the privilege of writing apps for your own device. What's not to love?

    --
    sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  15. Re:Don't make me puke... by RabidReindeer · · Score: 1, Insightful

    The IDE is so that management can hire ignorant monkeys and expect that the IDE's wizards will produce quality code rapidly and cheaply. Which, of course doesn't really happen since wizards are like the dock that carries you far out over the lake. And then ends before you get to where you really need to be. The IDE then allows ignorant monkeys to produce abominable-quality software. But hey, it was fast and cheap!

    You can edit Java code all day long in Windows Notepad. An IDE in capable hands merely makes the clerical services more convenient. It's just a pity that capable hands aren't valued much these days.

  16. Re:It allows for more mediocre programmers by H0p313ss · · Score: 3, Insightful

    Despite Java being my bread and butter for a decade this is hard to disagree with, I've met lots of professional java "programmers" who don't understand the JVM at all. (And don't even get me started on system administrators for enterprise systems... Seriously you're admin of a linux box and you don't know what top is and you're uncomfortable at the command line? Really?)

    Even worse is the student world, just dip into the Java question stream on StackOverflow. 50% of the questions any first-year student C.S. would laugh at.

    --
    XML is a known as a key material required to create SMD: Software of Mass Destruction
  17. Re:Plant? by allcoolnameswheretak · · Score: 5, Insightful

    Java is certainly not dead. If you're a software engineer, my gut feeling is that 70% of job offers involve Java programming. Java is widespread in the enterprise as well as open source frameworks and platforms.

    But parent is right in the fact that Java in the browser is practically dead. Some office environments still require Java for entperise applications, but practically all ordinary users don't need Java in the browser.

    It's a little ironic, since Java on the web was one of Java's main, original use cases. Now Java applets are niche and fading out, whereas Java is pretty much rampant everywhere else.

  18. Oh good greif by Anonymous Coward · · Score: 1, Insightful

    Form the parent's link:

    When I was a kid, I learned to program on punched cards.

    And it goes on there as you expect.

    Back then - and I was there too - you didn't have to knock out 50,000 lines of code, you didn't have GUIs, you didn't have to connect to a bunch of distributed machines, etc... and get it all done in two months.

    Those punched card programs were procedural batch programs that you ran while you slept. You usually didn't have to deal with real time user input or network crazyness or even multiple threads. And it wasn't that hard to keep it all in your head or if you had to, draw it all on a page or two of a legal pad.

    So, no we old farts were not smarter.

  19. The absolute #1 contribution of Java by tlambert · · Score: 3, Insightful

    The absolute #1 contribution of Java: it has allowed colleges and universities to turn out a generation of coders who are incapable of dealing with pointers, explicit memory management, stack layout, static memory maps, etc., etc..

    In other words: a crapload of people with "Computer Science" degrees who could not write an OS or even a trivial part, like the C library signal trampoline, to save their ass, because they are in this walled garden/protected environment where they are "safe" from having to actually deal with real hardware.

    Ironically, all of their JVMs on which they are normally running this code are not written in Java, because it's not really practical to do that.