Slashdot Mirror


If Java Wasn't Cool 10 Years Ago, What About Now?

10 years ago today on this site, readers answered the question "Why is Java considered un-cool?" 10 years later, Java might not be hip, but it's certainly stuck around. (For slightly more than 10 years, it's been the basis of the Advanced Placement test for computer science, too, which means that lots of American students are exposed to Java as their first formally taught language.) And for most of that time, it's been (almost entirely) Free, open source software, despite some grumbling from Oracle. How do you see Java in 2014? Are the pessimists right?

511 comments

  1. I hope not by onproton · · Score: 1

    Java is the (only) required programming course for the IT major at my University. /sigh

    1. Re:I hope not by Pino+Grigio · · Score: 5, Insightful

      It was just coming into favour when I left. When I was around it was Modula-2 and Eiffel (for OOP) at University. I have always found Java to be absolutely horrific in practice, being pretty much the worst of all worlds. Today C# is far superior, whatever you think about Microsoft, and it's a real shame that .NET was mishandled at birth in the way that it was.

    2. Re: I hope not by bugnuts · · Score: 4, Insightful

      You only need to learn one oo procedure based language. All others are just a book exercise.

      One assembly language and how compilers translate stuff.

      And then you should also learn scheme.

      That will handle basically everything, reducing it to a book learning experiment.

    3. Re:I hope not by Z00L00K · · Score: 3, Interesting

      I wouldn't state that C# is superior to Java from a language perspective, both are essentially derived from Ada and C with influences from C++.

      If Ada had been more open and better promoted then it would have been a far better choice.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    4. Re: I hope not by Anonymous Coward · · Score: 0

      I would add to this list one functional language with a type-inference system and pattern matching notation. This complements the other archetypical language experiences you've already listed, and I think does give a well rounded basis for learning almost anything else in the industry.

    5. Re:I hope not by Anonymous Coward · · Score: 3, Insightful

      I wrote compilers for Modula-2 in University, and was minimally exposed to Java (thank God). I have seen fans of it, but my own experience is that Java is a narcoticized slug. Its bloated (worse than COBOL), and has a learning curve steeper than a cow's face. Worse, unlike C, which is a compact language (you can learn all of the data structures can be easily described in 2-3 pages of any textbook or manual), Java goes on and on and on (the smallest book I've seen is 850 pages). There are 10,000,000,000,000 libraries, with that number being modified every year, and offers by exponents of the language to offer another 3-5 libraries for every one available already. In order to be productive in any way (eg: Hello World), you need to call in at least half of all available libraries (each, seperately, and in the correct sequence), and then hope that all of your current libraries are up to date and work with each other. Then you run the program, and wait, and finally it gives you your output: "Hello World".

    6. Re:I hope not by Anonymous Coward · · Score: 4, Insightful

      I wouldn't state that C# is superior to Java from a language perspective, both are essentially derived from Ada and C with influences from C++.

      Haven't used C# that much myself (and am totally out of touch with Java these days) but when I first used it just over ten years ago C# *did* strike me as very obviously a Java workalike, albeit one with a few nice improvements. Of course, it had quite obviously enjoyed the benefit of hindsight over Java, picking and choosing the aspects which worked and being able to ignore the dead-ends and mistakes, as well as the legacy library cruft which- even by the early-2000s- Java already had quite a lot of (mainly stuff from the early versions which was later deprecated).

    7. Re:I hope not by buddyglass · · Score: 1

      I have only a dim recollection of Ada from a programming languages "survey" course in college, but I remember being bothered by the fact that everything was a word. Some of them could have been symbols. It seemed really...verbose.

    8. Re:I hope not by Anonymous Coward · · Score: 0

      I wouldn't state that C# is superior to Java from a language perspective

      Indeed, no need to state the obvious.

    9. Re:I hope not by Aighearach · · Score: 5, Insightful

      Jeebus people, just open the story from 10 years and press "reload." There you go, you asked again and got the answers again.

      It might be that there are real pros and cons for languages. It might be that the reasons languages are "un-cool" are because they address the needs of the pointy-haired, and don't support pocket protectors.

      And it does make perfect sense for Java to be the 1 required language in a CS course; it might be the only way to get kids to learn it, since it is so un-cool, lame, and inefficient for the small projects that students are working on. In a well designed CS course, very few problems have a required language past the basic algorithms classes. (Where standardization allows for a higher quality class when the teachers are grad students)

      Anyways, it makes sense to teach Java, because the best use case for Java is to be able to use massive teams of low quality developers, potentially with high turnover, and still make working software. These are the people most in need of the job training type of education. People who are going to work in almost any other area are going to have to be able to learn new tools quickly based on the manuals, and it won't matter what they studied.

    10. Re: I hope not by Aighearach · · Score: 5, Insightful

      You don't need an "OO... language" because OO is a methodology. You can learn pure, real OOP using almost any language. Plain C works fine.

      You can also write bad procedural code in an "OO language" because that is also a methodology. I see that crap all the time; giant 50+ line methods that do a bunch of things and all the utility functions are procedural-style class methods. Lots of Rubyists don't have any idea even what the difference between OOP and Procedural is, they just assume they must be doing OOP since they're using an "OO language."

      Same thing with learning scheme; when you associate functional programming with a language instead of a methodology, the first thing new people do is try to find a way to fake some state and they end up with spaghetti procedural instead of functional.

    11. Re: I hope not by WarJolt · · Score: 3, Insightful

      You only need to learn one oo procedure based language. All others are just a book exercise.

      The problem with that is most people think because they can program in that language they understand the paradigm.

      There are tons of c++ and c# programmers out there who think object orientation is only about turning UI controls into objects. All other code is more of a mix of bad OO and imperative programming.

      I would revise your original statement to you only need to learn one oo language well. Same for functional languages. You are have to know a language well to understand the paradigm.

    12. Re: I hope not by gtall · · Score: 1

      Not Scheme, but rather Haskell. Haskell is a modern functional language with very strong typing. Scheme is a holdover from Lisp with static typing but no strong typing. Plus, Scheme adherents are insufferable. That alone should spike the language.

    13. Re:I hope not by Anonymous Coward · · Score: 0

      Haven't used C# that much myself (and am totally out of touch with Java these days) but

      How can you have an opinion after stating that?

      The relevant parts here being "haven't used C# *that* much myself" (which means I *have* used it, just not a great deal and my opinion was- as stated- a first impression from a decade back) and "totally out of touch with Java *these days*" (i.e. haven't used it *recently*- the over-a-decade-old opinion expressed above was at a time I *had* been using it).

    14. Re:I hope not by Anonymous Coward · · Score: 0

      It really doesn't matter what language you are required to learn. If you only learn it because it's required, you might as well do something else. You have learned enough languages when you stop worrying about languages. Languages are the easy part.

    15. Re:I hope not by plopez · · Score: 1

      Have been on hiring committees, any person applying who only knows one programming language is not going to get far with me. Or languages from a specific vendor *cough* Microsoft *cough*. If you are at the Uni. I advise you to seek out courses using other programming languages, and at least one of those should be functional.

      --
      putting the 'B' in LGBTQ+
    16. Re: I hope not by countach · · Score: 1

      Errm, Scheme has strong typing with NO static typing.

    17. Re: I hope not by countach · · Score: 1

      Why not just learn scheme, and everything else is a book exercise? Use it with a CLOS clone for OO. Most scheme courses probably dive into writing a VM also, so that takes care of the assembly side.

    18. Re:I hope not by RabidReindeer · · Score: 4, Informative

      Java owes little to Ada. Ada has one of the most rigorous data typing systems of any programming language, but its roots are in Pascal, and thence descend to Algol.

      Java's syntactic roots come from C through C++, which added OOP capabilities.

      C# is somewhat of a zig-zag. In part, it's Microsoft's alternative after they were prevented from hijacking Java. In part, it's reaching back to C++. Along the way, they attempted to cure some of Java's warts.

      One bit of irony. Both Java and C# are programming languages designed and "owned" by private organizations, each of which also owns at least one major OS. Java users always had a high degree of confidence that Sun would never abuse that position and attempt to use Java to lock them into Solaris. C# never enjoyed that confidence, which is why there's precious little C# work done on the non-Windows OS's.

    19. Re: I hope not by Anonymous Coward · · Score: 0

      "and has a learning curve steeper than a cow's face"
      LOL !

    20. Re:I hope not by phantomfive · · Score: 1

      because the best use case for Java is to be able to use massive teams of low quality developers, potentially with high turnover, and still make working software.

      This is exactly what I came here to say. And it does it well.

      --
      "First they came for the slanderers and i said nothing."
    21. Re:I hope not by Anonymous Coward · · Score: 1

      What about Computer Science majors? IT is basically a simplified Computer Science.

    22. Re:I hope not by aaaaaaargh! · · Score: 1

      Ada favors readability over brevity, so it takes a longer to type programs but makes them much easier to understand. I find it so easy to read that I can dive into the code bases of packages and even GNAT itself and understand them without resorting to commentaries or additional documentation. It has its quirks, though, and a relatively steep learning curve.

    23. Re:I hope not by Darinbob · · Score: 1

      Nothing wrong with that though. There are people who really really hate C for being an obtuse language with too many symbols (they probably pass out when looking at Perl). If you discount languages derived from C, Ada is not relatively verbose compared to its peers.

    24. Re:I hope not by Anonymous Coward · · Score: 1

      Or languages from a specific vendor *cough* Microsoft *cough*.

      Yet another idiot who lets their personal bias get in the way of objective decisions. Regardless of what you think of Microsoft, C# is a very good language as is Typescript (which also has the benefit of being FOSS, licensed under ASL 2.0) and saying that the fact that a candidate knowing languages from Microsoft would cause them to not "get far" with you just demonstrates how out of touch you are and how unsuitable for that position you are. Although it strikes me that perhaps you mean they wouldn't get far with you on a personal level?

    25. Re: I hope not by Anonymous Coward · · Score: 0

      This is the very core of the problem with Java and C++

      People being taught how to use it are being taught how to do the OOP part like it's a requirement, so there is a lot of code bloat around initialization and destruction but very little in the way as to why you want to do something.

      In C++ you have piles of unnecessary verification, error checking, sanity tests for code that, to put it bluntly, shouldn't exist. If you need to do all these tests, then you're expecting to screw up somewhere as part of someone elses third party library. If you're not creating a library, then all this error checking shouldn't need to exist, again, unless you're using a third party library from which you can't trust the input to be correct. In which case you may as well just staticly compile the library in and damn anyone upgrading the library because of any security failures later.

      When all is done, C++ programs are slower and harder to understand by everyone, because instead of just writing thin management layers, everyone keeps adding vertical management helper functions over the library functions because ... why? They don't like the coding style of the library?

      This is why I throw my hands up in frustration every time I look at the available game libraries. Every single one of them wraps a dozen third party libraries with helper functions on top of helper functions, So to do a simple "Hello World" you've probably compiled 10MB worth of libraries first that none even get used.

    26. Re:I hope not by Pino+Grigio · · Score: 1

      This is absurd. Generic programming, for example, is far better in C# than Java. Most of the stuff included with Java 5.0 was already present in C# 1.0.

    27. Re:I hope not by Anonymous Coward · · Score: 0

      This is not the only reason. Many university are turning to python as the introductory language.
      Java's selling points:
      Java has many good points, but it has many pitfalls as well.
      Java is about as hard as C++ to learn. (if you don't include Templates, or the many macros or obfuscated code...)
      Java has one of the better inheritance systems currently implemented.
      Java is managed code with garbage collection. (This allows what would normally be considered horrible code to work correctly.)
      Java is strongly typed, which in theory helps prevent many coding errors. (in practice I have yet to see this work as advertized.)
      Java is platform independent, yet is also compiled. Thus you get the benefits of having compiled code, that will run on any system.
      Now for the big one: Java is the primary development language for Android devices.

      Java does have pitfalls:
      Java is both compiled and interpreted, so it has the confusion that comes with compiled code, and slower execution of interpreted languages. (basically the same as .net)
      Java has many bugs in both it's compiler and its run time environment.
          * Including privilege escalation
          * Running unsafe code
          * Memory leaks
          * Security issues
      An update to the Java run time environment, can both break your code and introduce bugs to your code. (Though it can also fix some bugs as well. But generally changing code that works is considered bad even if there are potential good side effects.)
      The Java API is so eminence that even an expert in Java is unlikely to know even a good way to do something 100% of the time. (Eg. it's common to see tools that are in the API recreated because the developer did not know they were in the API. Not really bad until someone notices this and you have to recode half your program to implement the API version, which can be a real pain sometimes. Ever try sorting?..)
      Learning in Java can have the side effect of not learning proper memory management. This is really bad if you are developing for a embedded system or creating a custom database.

      In general unless you have a need for java's platform independence, I would recommend staying away from it. That being said I Java worked in Java quite a bit and it is not a bad language. There been significant advances in Java including processors that can run Java byte code natively, eliminating the slowdown associated with interpreted languages.

      Also talk to your professors about getting other languages into your courses.
      Especially ones that use other paradigms, here are some examples:
      Procedural - C, Basic
      OO - Java, C++
      Functional - Lisp based (Scheme, Common Lisp)
      Logic - Prolog
      Or even multi-paradigm languages like Perl. (Yes, I know Perl is generally not considered a good language, but there some things it does really well. Such as generating large blocks of code that would normally drive you or me crazy. In fact in one class my team used a Perl script to parse a Dot language file into actual code OO code for a robot. This was impressive as we were able to show the robots actual code in a single presentation slide, it also made debugging a bit easier.)
      (Side note some professors will give extra credit for Scheme programs. They are generally very close to actual mathematical formulas, except for the whole prefix thing, which after coding a string parsing calculator actually makes a lot of sense.)

    28. Re:I hope not by MightyMartian · · Score: 1

      If the only language you have proficiency in is C#, then you have a problem that may very well interfere with your employability.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    29. Re:I hope not by Wootery · · Score: 3, Insightful

      C# never enjoyed that confidence, which is why there's precious little C# work done on the non-Windows OS's.

      Well, let's be clear: it's not just because Sun had more goodwill than Microsoft.

      For a start, Sun made JVMs for all major platforms. Microsoft made .Net for Windows only. They made Silverlight for Windows and Mac, granted, but never even a nod to Linux. Mono had to make its own way.

    30. Re:I hope not by Wootery · · Score: 4, Insightful

      Oh, and that in Java, the 'culture' is to deliberately avoid anything non-standard or specific to any JVM. In the C# world, though, there are things like WinForms: vital parts of the 'ecosystem' which are platform-specific and non-standard.

    31. Re:I hope not by plopez · · Score: 1

      What I am saying is that is if you only know MS products you have a very narrow experience range to your detriment. If all you knew was Objective C and Apple development environments it would also count against it. C#, Transact SQL, Powershell, C, Perl, Bash, and a functional language would be a nice experience range.

      --
      putting the 'B' in LGBTQ+
    32. Re: I hope not by Wootery · · Score: 1, Insightful

      You only need to learn one oo procedure based language. All others are just a book exercise.

      I guess C++ doesn't count as an 'OO language', then, because you sure as hell can't take a Java programmer and turn them into a competent C++ programmer overnight.

      This whole idea of programming languages share the same basic concepts, so once you can program in one language, it's easy to learn new languages needs to die. You cannot take a Java or PHP programmer and have them learn to make proper use of C++, or Lisp, or Haskell, or assembler, or even C, without considerable effort. Even just the compile/link model of C takes some real work to get used to.

    33. Re: I hope not by deKernel · · Score: 1

      I thought I was the only one that laughed at that one.

    34. Re:I hope not by S.O.B. · · Score: 2

      I assume you mean generic programming on Windows is easier in C#. Although debatable on Windows, it's less so on some platforms and impossible on others.

      All the languages that have truly had longevity have also been generally available on numerous platforms (i.e. not just Windows and Mac).

      --
      Some of what I say is fact, some is conjecture, the rest I'm just blowing out my ass...you guess.
    35. Re: I hope not by Pseudonym · · Score: 1

      The only reason that you would teach Scheme is if you were teaching SICP. Teaching Scheme without teaching SICP is a waste of Scheme.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    36. Re: I hope not by cheekyboy · · Score: 1

      Compile and link is a simple concept.

      10000 functions, create 10000 objects, 9990 are unused. 10 get copied to one bigger object. Duh!

      --
      Liberty freedom are no1, not dicks in suits.
    37. Re:I hope not by cheekyboy · · Score: 1

      why? If you do 50hrs a week on pure C#, and are considered a genius on it, then you can implement and code anything in it that you can in any other language. If a company only makes C# apps or only has C# web services, why would you need java or C++ expertise. Though if youre an expert in C#, you would find other langs easy to learn.

      Java wont magically make a giant problem 10x easier.

      So unless you require 100000 linux machines in a cluster, that is cheaper than 100000 windows machines, C# is good.

      Infact, I would prefer C# compiled to binary over C++ any day. And which C++ ? there are many variants and addon frameworks that restrict your environments.

      --
      Liberty freedom are no1, not dicks in suits.
    38. Re:I hope not by Pseudonym · · Score: 1

      Anyways, it makes sense to teach Java, because the best use case for Java is to be able to use massive teams of low quality developers, potentially with high turnover, and still make working software.

      To be fair, there's a large amount of uninteresting enterprise glue code that the world needs, and somebody has to write that.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    39. Re: I hope not by Anonymous Coward · · Score: 0

      Replace C# with Cobol and you might realize one issue. Other thing is that learning new languages affects your thinking. I had to learn C++ to learn how to split dependencies. I had to learn Java to use exceptions. I had to learn Scala to value functions with no dependencies. I consider myself a lot better programmer after learning many languages.

    40. Re:I hope not by Bill+Dog · · Score: 1

      Not around here. But I had to abandon 10 years of C++ for that very reason. Unfortunately. (Luckily MS has grown C# with a lot of what are to me C++ influences, unlike Java which was among other things meant to be an anti-C++.)

      --
      Attention zealots and haters: 00100 00100
    41. Re:I hope not by arglebargle_xiv · · Score: 1

      It was just coming into favour when I left. When I was around it was Modula-2 and Eiffel (for OOP) at University.

      Given that Eiffel was created by Satan himself to torture lost souls, I can't see how Java could be worse. The language itself was quite nice and had some good ideas, but the programming/development environment was appalling, I'd rather spend eternity in the company of Beelzebub and all his hellish instruments of death than have to develop code using those tools again.

    42. Re:I hope not by Anonymous Coward · · Score: 0

      Ada is superior. Too bad it's not very wide spread. Or promoted, or open, or anything apart from being superior as a language.

    43. Re: I hope not by Anonymous Coward · · Score: 0

      You don't need an "OO... language" because OO is a methodology. You can learn pure, real OOP using almost any language. Plain C works fine.

      Well, yes. As I regularly point out, the Linux kernel is an example (at least in part) of object-oriented C. However, I wouldn't recommend it for a beginner... having a language that holds your hand by having a simple, clear syntax for tasks like implementing interfaces, subclassing and even operations as simple as invoking a method on an object is much more important for a beginner to object-oriented design than the seasoned experts who are the only ones who would typically make it work in C.

    44. Re:I hope not by mcvos · · Score: 2

      I wouldn't state that C# is superior to Java from a language perspective, both are essentially derived from Ada and C with influences from C++.

      But C# is far quicker to incorporate modern language features (like closures and other dynamic programming features), while Java is constantly dragging its feet.

      I'd never lock myself into a Microsoft ecosystem by specializing in C#, but as a language, it's more up to date than Java. There's a good reason for the proliferation of other JVM languages like Groovy, Scala and Clojure.

    45. Re:I hope not by angryfeet · · Score: 1

      Generic programming isn't the same thing as cross platform programming. C# started off as Java with hindsight, and it's also been evolving much faster than Java has, so its considerably better now. Mono has also made it cross platform. For example, the Xamarin guys ported Android to run on Mono (ie Java to C#). The benchmarks ran a number of times faster.

    46. Re: I hope not by Anonymous Coward · · Score: 1

      Learning the syntax is never the challenge. The tough part is memorizing the bazillion APIs you are tested on the job interview.

    47. Re:I hope not by Anonymous Coward · · Score: 0

      Nice try

    48. Re:I hope not by Anonymous Coward · · Score: 0

      Luckily, the mood and mentality of the C# lock in is changing. Microsoft has been surprisingly progressive by open sourcing so much of their .Net tools and frameworks that one day running a full C# stack on a linux box might not be unheard of ( or laughable ).

    49. Re: I hope not by Urkki · · Score: 1

      Compile and link is a simple concept.

      10000 functions, create 10000 objects, 9990 are unused. 10 get copied to one bigger object. Duh!

      Mmm, not sure what point or joke you are trying to make, but it is ruined by numerical inaccuracy: generally one object (whether you mean C++ class or a compiler output object file) contains many exported functions.

    50. Re:I hope not by Z00L00K · · Score: 1

      One word: COBOL

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    51. Re:I hope not by Z00L00K · · Score: 1

      But then C# also suffers from bad decisions that are making the code hard to maintain. Especially the 'var' type which can mean whatever the coder want it to mean, combine that with some remote objects provided by another server on the network and you have built yourself a nice little time bomb.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    52. Re:I hope not by turgid · · Score: 1

      why?

      Learning a language that comes from a completely different school of thought (i.e. "paradigm") will give you a far larger perspective than only having learned one language or family of languages. For example, if all you ever saw was C++, Java and C# your world view would be extremely limited. Someone who has learned a little FORTH, LISP and Smalltalk, not to mention various assembly languages, would be an order of magnitude more productive than you, produce fewer bugs and be able to think of more good solutions to difficult problems.

      If all you ever do is write GUIs for the corporate Oracle or MS database, then stay in your C# paradise.

    53. Re: I hope not by Daniel+Hoffmann · · Score: 1

      Have you ever used function pointers in C? Proper syntax and semantics built into the language goes a long way to enable the OO paradigm.

    54. Re:I hope not by Frederic54 · · Score: 1

      About the same, I got my masters in 1996 and it was Eiffel at the time for OOP, quite heavy language but true OOP.
      Java was seen as a little guy bouncing left and right on a web page...

      --
      "Science will win because it works." - Stephen Hawking
    55. Re:I hope not by Anonymous Coward · · Score: 0

      What. The. Fuck? Slashdot is consumed by fresh-outs. Are there any real developers left? There is no such thing as a 'better' language. They each have strengths and weaknesses. Pick the tool for the job. Don't let the tool pick you. Morons.

    56. Re:I hope not by Tamerlin · · Score: 1

      Mono had to make its own way.

      That's only partially true. Mono had development support from Microsoft, and unlike Java .NET and C# have been officially open standards for a long time, because Microsoft submitted the specs to ECMA.

    57. Re:I hope not by godefroi · · Score: 1

      You are so completely, terribly, obviously wrong. There are definitely 'better' languages.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    58. Re:I hope not by godefroi · · Score: 1

      Um, 'var' always means exactly what the compiler decides it means. The coder gets no say in the matter. It's not a variant type, it simply means, 'compiler, decide what this type is for me'. It's called 'type inference', and it's quite common in non-ancient programming languages. C++ even has type inference, now. ML, Haskell, Scala, and Apple's new Swift language all have it as well.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    59. Re:I hope not by rhyous · · Score: 1

      I heard MS was contributing $$ to Novell to further the mono project from a member of the Novell team. Which essentially helped spawn Xamarine. Can any provide a source that confirms or refutes this.

    60. Re: I hope not by dilvish_the_damned · · Score: 1

      Seconded on the grounds that there are 'worse' languages. Though usually I see Java as the example.

      --
      I think you underestimate just how much I just dont care.
    61. Re:I hope not by Jefftoe · · Score: 1

      Yeah, Ada has always seemed "strongly typed" to me, but customizable. AND I loved := it. lol

    62. Re:I hope not by Jefftoe · · Score: 1

      However, and it's been a long time, but one frustrating thing about Ada was the compiled library or procedures and such. It never seemed portable

    63. Re:I hope not by Anonymous Coward · · Score: 0

      and if all java programmers suddenly switched to Ada, the world would be a lot worse off than it is now with PHP.
      Studying CS will at least help understanding what all is involved to safely program in Ada while it would be lost on the millions of coding noobs learning java these days.

    64. Re:I hope not by Z00L00K · · Score: 1

      And that's exactly why the code is hard to maintain - the compiler decides stuff that makes it hard or impossible to know what the "var" type means from a coding perspective. I have lost countless hours on that because I couldn't figure out the type to adapt the code in a suitable way.

      It's a typical example of ugly coding that someone inheriting the code will start a hate session for.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    65. Re: I hope not by PsiCTO · · Score: 1

      Two points: 1) (always made) steep is good if the x-axis is time 2) Cow regurgitate and chew cud... or is that cruft? There must be more analogies between cows and programmers, but I'll leave that to Gary Larson...

    66. Re:I hope not by Anonymous Coward · · Score: 0

      Java didn't even exist when I was a college-aged kid like yourself.

    67. Re: I hope not by Max+Littlemore · · Score: 1

      You can also write bad procedural code in an "OO language" because that is also a methodology. I see that crap all the time; giant 50+ line methods that do a bunch of things and all the utility functions are procedural-style class methods. Lots of Rubyists don't have any idea even what the difference between OOP and Procedural is, they just assume they must be doing OOP since they're using an "OO language."

      ... and in some cases breaking with OO methodology is the correct approach at least for Java. I'm thinking of squeezing performance out of an Android app on low end devices where it's a good idea to use the "static" keyword all over the place and in doing so treat member variables as globals and functions as effectively global subroutines. I think of it as risotto code - a big bowl of starchy mess that's a bit less stringy in appearance than spaghetti and potentially harder to get your head around.

      Which sort of brings me to my view on whether or not Java is cool. Java itself is kind of like a swiss army knife that can be used to do just about anything you could want to do. It comes with a huge amount of bloat to that allows it to handle just about anything and while it's almost never as good as a specialist tool but you can always make it work. Swiss army knives are cool to boys between about 8 - 16 years old give or take. An adult with a swiss army knife in a leather pouch on their belt on the other hand is never cool.

      Useful maybe, but never cool.

      --
      I don't therefore I'm not.
    68. Re: I hope not by Wootery · · Score: 1

      Do shut up and take your obtuse time-wasting elsewhere. Sigh I'll bite anyway.

      Which language did you learn first? Which language did you learn second? I suspect the second took you less time to learn than the first, but I suspect also that it was still a non-trivial learning experience.

      Being a "programmer" absolutely does not mean you are able to pick up a new language and get your head round it in a few short hours. That is my point.

      I can use any one of those languages, and have in the past

      So you can use C, C++, and COBOL. So, three procedural/OOP languages, then. If you were tasked with bug-fixing a Haskell code-base, you'd be facing totally alien programming concepts. Your idea of I am not defined by a language goes out the window, as you realise you aren't a competent functional programmer.

    69. Re: I hope not by Wootery · · Score: 1

      Yeah... not really, no. Suppose there's a name-collision between C functions in two different libraries you're using. Better get the link-order right. You need to know the way that linking concepts interact with with inline functions, static functions, and templates. C++ member-functions always have external linkage. Forward declarations of template classes to reduce compile-times. The magic that goes on enforcing the One Definition Rule in the face of templates. None of these concerns arise in Java. In Java, .class files act as both the header and the dynamic library, and it 'just works'.

      Atop all that, you may need to chose a cross-platform build-system like CMake, and maintain its makefiles. In Java you normally have either a NetBeans project or an Eclipse project, and I believe the two are trivially converted. In C++, getting a completely portable codebase but with an autotools build system, to build in Visual Studio through CMake, might take some real doing.

      Also, Urkki is right - not sure where you're getting this idea than each function gets its own object file.

    70. Re:I hope not by Wootery · · Score: 1

      Mono had development support from Microsoft

      Yes, indeed, but in a conflict-of-interest halfway-house sort of way: the .Net codebase remains entirely separate from Mono, presumably because MS wants Windows to be the best place to run C# code, but they also want to be able to say C# is genuinely cross-platform. HotSpot, however, runs on just about everything.

    71. Re: I hope not by Anonymous Coward · · Score: 0

      The irony of your comment is that Groovy (okay jgroovy), Scala, and Clojure all run on the JVM which, arguably, is Java. As a programming language (i.e. an expression language for imperative programming), Java may leave something to be desired (for a particular person or project) but the runtime system is quite good.

    72. Re: I hope not by Anonymous Coward · · Score: 0

      Java isn't great for "hello world." It's better for long-running processes that benefit from everything the JVM provides.

      I'm sure there are x86 assembler programmers RingOFL at the "slow hello world" case and remembering when the C generation came along with all their #includes because they were too lazy to implement efficient printing routines themselves.

      C /is/ a small language; you just can't do anything with it in its own. You need libc. And libcrypt. And libssl. And libfoo and libbar and .. The list goes on and on. 10M libraries for Java aren't required... they are available. Which makes it easier to stand on the shoulders of giants.

    73. Re: I hope not by Anonymous Coward · · Score: 0

      ...and Scheme wasn't good enough for that?

      Regexp isn't a language style you need to understand from a deep conceptual perspective. You can learn it reading a man page.

      It's hard to understand the Zen of Lisp by reading its Wikipedia entry, however.

    74. Re:I hope not by godefroi · · Score: 1

      If you lost hours to 'var', then you lack sufficient skills to perform your job. Congratulations, you've reached your Peter level.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    75. Re: I hope not by Anonymous Coward · · Score: 0

      If one of the primary purposes of OO is to promote re-use (treating each type or small collection of types as a library in and of itself), then why shouldn't code be written to protect itself from stupid clients, just as a "Library" would?

    76. Re:I hope not by Z00L00K · · Score: 1

      You haven't seen the code I have had to dive through.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    77. Re:I hope not by godefroi · · Score: 1

      And I don't need to.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    78. Re: I hope not by Aighearach · · Score: 1

      OO can't be to promote re-use, because it is just a type of structured programming, and all structured programming is promoting re-use very very heavily. That was never an advantage of OOP.

      But what he's talking about is the other direction; the library should protect itself from bad clients, but the client shouldn't have to protect itself from bad libraries. The library should be able to encapsulate its own testing. That is true in any structured programming paradigm.

      And specifically as to C++, that is perhaps why OOP using plain C is so much cleaner (in the best case where strict conventions and best practices are followed, such as glib/gdk/gtk)

    79. Re: I hope not by peccary · · Score: 1

      People may challenge you on this - refer them to CLU.

    80. Re:I hope not by Anonymous Coward · · Score: 0

      If you discount languages derived from C, you're no longer talking about programming in Real Life.

  2. Nope by Anonymous Coward · · Score: 1

    Java is not only about FOSS. It also has a strong hold on enterprise software. Which is why is still relevant.

    1. RE: Nope by Anonymous Coward · · Score: 1

      I goes without saying, but I forgot to mention on the previous post. Enterprise software aren't usually cool...

    2. Re:Nope by Anonymous Coward · · Score: 0

      > Java is not only about FOSS. It also has a strong hold on enterprise software. Which is why is still relevant.

      It only has a hold on enterprise because it was peddled as a "silver bullet," the same way Oracle was. It won out because a bunch of salesmen in suits got behind it, not because it's better.

    3. Re: Nope by bugnuts · · Score: 2

      COBOL was never cool, either, but is still in use in enterprises.

      For learning the craft, they should use what's best to teach it, not necessarily what's relevant at the time (unless it's a job school).

    4. Re:Nope by Pino+Grigio · · Score: 1

      That's the wrong side of the equation. What you should say is that it won out because a bunch of suits who make purchasing decisions got behind it. Don't blame the salesman.

    5. Re: Nope by meerling · · Score: 1

      So most schools should only teach things that are not relevant to employment?

    6. Re: Nope by bugnuts · · Score: 2

      What's relevant for learning to program might not correspond to what's currently being used.

      Teach a man code a a language, and he's relevant to a small market. Teach a man to program, and he owns them all.

    7. Re:Nope by Anonymous Coward · · Score: 0

      It takes two to tango. I'm not convinced the purchasers came banging on Sun's door seeking a better mousetrap.

    8. Re:Nope by msobkow · · Score: 4, Interesting

      Those "suits" you refer to included every major hardware vendor on the planet. Java was only sold as a silver bullet for portability, not speed, not efficiency, not scalability, but solely for it's ability to be shifted from one vendor's platform to another's.

      When it comes to straight forward business service and batch job processing, it succeeds admirably at that goal, which is rather rare for what you claim was a "silver bullet."

      The "problem" is that all kinds of people have visions of Java doing this, that, and the other thing, ranging from the addition of database bindings that don't allow for stored procedures to 3D graphics. Java's "problem" is that it's gradually becoming too much of a "kitchen sink" instead of staying focused on what it was designed for: portable business programming.

      --
      I do not fail; I succeed at finding out what does not work.
    9. Re:Nope by sjames · · Score: 4, Interesting

      It sorta got there. It's an unmitigated disaster on the browser, for example. It is also awfully touchy about what version of java you're running. The desktops with native java CPUs never happened.

      Java definitely isn't Hip and never will be. It is, however, the new COBOL which means it'll be around for a long time.

      The one exception is it's use in Android. I wouldn't say the language is hip there but it is tolerated because mobile is hip.

    10. Re:Nope by Anonymous Coward · · Score: 1

      > portable business programming.

      Only if you mean "portable if the only thing I have is a binary". Considering the crazy amount of compatibility issues between different Java versions, vendors etc, the average C++ program is on a similar level of "portable".

    11. Re:Nope by Aighearach · · Score: 1

      Mostly true, but Java was indeed always sold as being scalable. Portable scaling.

      Speed and efficiency were supposed to come from the Java-native CPUs, which of course only made it into thin clients. Well, medium thin clients that had application-specific thick client capabilities that could be remote-loaded. I don't think they ever really even worked out how to describe it in a clear way; it flopped before making it out of the buzzword soup. But apparently it ran Sun's web browser really well.

    12. Re: Nope by Aighearach · · Score: 4, Funny

      COBOL was never cool, either, but is still in use in enterprises.

      For learning the craft, they should use what's best to teach it, not necessarily what's relevant at the time (unless it's a job school).

      Lawyers aren't cool, and they make almost as much money as COBOL programmers. They even have their own schools.

      Everybody should learn COBOL though. "Okay class, now we're going to learn what it is like when you only have pass-by-value, and no references. At the end of the unit we will understand why all modern languages use pass-by-reference, except for optimizing literals, and why modern COBOL programmers write all their new code in C libraries."

    13. Re:Nope by NotInHere · · Score: 4, Insightful

      All browser plugins are unmitigated disasters.

    14. Re: Nope by RightwingNutjob · · Score: 1

      Java is the new COBOL as far as I'm concerned. I work in a large research lab that got bitten by the java bug in the early-mid 2000s. And now we have a large codebase that's locked in to a particular vendor, that only works with other java code, and a whole bunch of "programmers" whose only skill is java. Which means if we need something in C or C++ for low-level hardware interfacing or for running faster than dead slow, we need to reimplement it from scratch, except we need to hire programmers to do it if it's big because all of our "programmers" only know java, except we can't hire anyone new, because we've already got all these "programmers" on staff.

    15. Re: Nope by AJWM · · Score: 4, Informative

      Back in my (pre PC) college days, COBOL was big in business but wasn't taught or used by anyone in the Computer Science department. If you wanted to learn COBOL, those courses were offered through the school of Business.

      And APL was taught by the department of Mathematics, to the extent that APL packages were used in the statistics classes.

      Computer science classes weren't about teaching programming languages (we probably went through a dozen or more, from Algol and assembler to Lisp and Simula and Snobol -- we were expected to learn them ourselves depending on the assignment), but about how to think about programming (and operating systems and so on).

      --
      -- Alastair
    16. Re:Nope by Anonymous Coward · · Score: 0

      Java was sold as the alternative to Microsoft. The only other alternatives (C and C++) already had bad reputations so people who didn't know better believed the hype about Java.

    17. Re:Nope by phantomfive · · Score: 1

      The desktops with native java CPUs never happened.

      ARM now makes chips with instructions designed specifically for running a VM (like the JVM, it even calls them the Java extensions). I don't know if Intel has any plan for that kind of thing.

      --
      "First they came for the slanderers and i said nothing."
    18. Re:Nope by Anonymous Coward · · Score: 0

      It's only an unmitigated disaster in the browser because it isn't baked in (like Javascript). If Microsoft hand't been such disks back in the day, the run time for the browser could have been Java, nor Javascript, and for the past 15 years we could have been writing proper desktop applications to run in the browser, rather than this half assed stuff with Javascript.

      And for anyone who thinks Java is too big or slow for browser, virtually every feature phone on the planet forever has had J2ME baked in.

    19. Re:Nope by BitZtream · · Score: 1

      No, they don't. They stopped a while back because no one cared. They tried making some instructions for generic JVM like environments after that, but those too have been deprecated.

      ARMv6 added support, but ARMv8 removes support for any JIT VM instructions with the removal of ThumbEE.

      That was 3 years ago.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    20. Re:Nope by BitZtream · · Score: 1

      ActiveX has no sandbox and no security issues. No more than a DLL does.

      ActiveX is nothing more than a method for a DLL to self describe its functionality to an application that loads it.

      Your statement shows you have no idea what ActiveX is or what problems existed RELATED TO (not caused by) ActiveX.

      The 'security' issues you are referring to are the result of programmers blindly downloading and loading any ActiveX on the Internet. This is no different than blindly downloading and executing EXEs and its not a flaw with EXEs or ActiveX, its a flaw with the application that is downloading and loading/executing them.

      At no point was there a 'sandbox' for ActiveX. Its not part of the design and never was. It was expected that they would be used intelligently, but no one on the IE team was intelligent.

      Internet Explorer was broken, not ActiveX.

      Please learn WTF you are talking about before continuing to spew this ignorance. Its been 18 years since this ignorance started, you'd think by now you guys would have a clue.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    21. Re:Nope by Rinikusu · · Score: 1

      I thought Java was designed for ease of programming set top boxes and consumer electronics?

      --
      If you were me, you'd be good lookin'. - six string samurai
    22. Re:Nope by CauseBy · · Score: 1

      Only if you mean "portable if the only thing I have is a binary".

      No, also for the development. My company is writing a major piece of new software in Java. All the programmers have Macs although the deployment environments will be mostly Linux and Windows.

      But even if not, "portable if I only have a binary" is incredibly valuable because that describes a lot of situations.

    23. Re:Nope by Anonymous Coward · · Score: 0

      > Speed and efficiency were supposed to come from the Java-native CPUs

      The same nonsensical claims were made for pure Lisp or Scheme baed CPU's. They never worked, partly because both languages are so recursion based, and partly because *garbage collection in hardware is not workable*. It's an incredibly resource intensive operation, and you can't shrink it into smaller components.

    24. Re:Nope by Pseudonym · · Score: 4, Insightful

      Almost. It was designed for running untrusted code delivered via the network to set top boxes and consumer electronics. There are many things that can be said about this, and how well it translated into the world of the web, but consider what Java gave us.

      The JVM is a clean bytecode virtual machine, which can be implemented in hardware and reasonably compiled to native machine code. An implementation can statically verify that the code will not misbehave in certain ways. It scales on platforms varying in size from a 1990s-era smart card to a modern cluster.

      It gave us the first garbage collected language that the commercial world could handle. It gave us the first programming language which the open source world took seriously and wasn't C. It sparked a new world of research into previously neglected areas, such as JIT compilation, concurrent garbage collection, and so on. It gave us the notion of an "app" and an idea of apps could achieve in the Internet era.

      Java may never have been cool, but it deserves an honoured place in the history of computer science and software engineering.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    25. Re:Nope by sjames · · Score: 2

      In the beginning, Netscape wanted both Java and Javascript in the browser. Javascript was to be the VB of the browser programming world with Java for professional programmers to do the heavy lifting.

      The Java side rapidly got the reputation for being slow, crashy, resource hogging, and way too sensitive to sub-minor version differences so it was largely ignored.

      Javascript, OTOH was eagerly embraced, first by web designers wanting cutsie special effects and minor amusements and then for more serious pursuits. Then came AJAX..

      J2ME could have worked but in the fast moving web world, it was a day late to the party. By the time it came out and demonstrated that it wasn't a lumbering resource hog, the ship had sailed. Javascript was everywhere.

    26. Re:Nope by TheRaven64 · · Score: 1
      Wow, that's a pretty old article. ARM9 was introduced in 1997 and pretty much dead for a good 5 or so years. The Jazelle extensions (no, they're not called 'Java extensions', they're called Jazelle DBX) added a decoder alongside the ARM decoder that would execute simple Java instructions natively and trap to the JVM for more complex ones. They were pretty nice for their target (i.e. machines with 2MB or so of RAM) but were surpassed quite a while ago by JIT compilers, for several reasons:
      • The JVM is stack-based, so it's hard to get any ILP out of a superscalar core and it's even hard to identify hazard-free pairs for a simple in-order pipelined core, so you don't end up packing the pipeline very well.
      • The javac output is not very well optimised, because it's intended to be consumed by something else that will optimise and doing the optimisation in the front end can hide opportunities later.
      • Run-time optimisations (trace-based adaptive recompilation) techniques improved a lot

      Once ARM devices wanting to run Java had 32-64MB of RAM, you could get better performance with an optimising JIT compiler than with Jazelle and it died. More recent chips have Jazelle RCT (also known as Thumb-2EE) which has some extra instructions for fast bounds checking and so on, but even that isn't used much.

      --
      I am TheRaven on Soylent News
    27. Re:Nope by TheRaven64 · · Score: 1

      The JVM is a clean bytecode virtual machine, which can be implemented in hardware and reasonably compiled to native machine code.

      Only one of those is really true. You can implement a stack-based ISA in hardware, but there's a reason that most of the companies that tried it went out of business in the '80s: stack-based ISAs are really hard to get any ILP from and so once pipelining became common they started to be noticeably slower and were completely killed by superscalar register-based architectures.

      --
      I am TheRaven on Soylent News
    28. Re: Nope by Anonymous Coward · · Score: 0

      Yep. Java is COBOL of the 1990s. Like COBOL it will last nearly forever and give the boomarang generation something to keep doing when they retire and nobody else knows the acient java systems.

    29. Re:Nope by phantomfive · · Score: 1

      Wow, that's a pretty old article.

      Yeah, sorry, I didn't realize it when I posted it. I call it Java extensions because when you look at /proc/cpuinfo, they are named JAVA. Mainly intended to be used with Dalvik (or ART, I guess) so javac isn't relevant there.

      --
      "First they came for the slanderers and i said nothing."
    30. Re: Nope by Toshito · · Score: 1

      I don't know where you learned COBOL, but passing parameters by reference is not only possible but also very easy... you just add "BY REFERENCE" after the parameter...

      You can pass by value, by reference, by content, and also you can pass the address of the parameter.

      --
      Try it! Library of Babel
    31. Re:Nope by flargleblarg · · Score: 1

      [...] Java was only sold as a silver bullet for portability, not speed, not efficiency, not scalability, but solely for it's ability to be shifted from one vendor's platform to another's.

      Your memory is partially correct. What it was actually touted as was:

      “Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language.”

    32. Re:Nope by flargleblarg · · Score: 1

      [...] It gave us the notion of an "app" and an idea of apps could achieve in the Internet era.

      Applet actually.
      The notion of an "app" didn't come until 2008 with the iPhone.

    33. Re:Nope by TheRaven64 · · Score: 1

      The only thing ARM ships that might speed up Dalvik is Thumb-2EE (a.k.a. Jazelle RCT), which neither Dalvik nor ART actually use. No idea what your /proc/cpuinfo is talking about.

      --
      I am TheRaven on Soylent News
    34. Re:Nope by phantomfive · · Score: 1

      'adb shell cat /proc/cpuinfo' will give you lots of info about the cpu, one of the features being listed there as JAVA

      --
      "First they came for the slanderers and i said nothing."
    35. Re:Nope by TheRaven64 · · Score: 1

      It's probably the ultra-restricted version of Jazelle that is part of ARMv7 - it supports the branch to Jazelle mode instruction, but throws a trap when it is encountered so that it can be emulated by a JIT compiler.

      --
      I am TheRaven on Soylent News
    36. Re:Nope by Pseudonym · · Score: 1

      You can implement a stack-based ISA in hardware, but there's a reason that most of the companies that tried it went out of business [...]

      You mean like Intersil, Sun, and Atmel?

      [...] stack-based ISAs are really hard to get any ILP from and so once pipelining became common they started to be noticeably slower and were completely killed by superscalar register-based architectures.

      There still exist applications where CPI is a far less important metric than power usage. If you have a car with a remote keyless entry system, for example, chances are good that the remote control's CPU is a stack machine.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  3. Nope by Mashiki · · Score: 1

    Still not cool, it's about as "cool" as activex with all of the broken sandbox and security issues though.

    --
    Om, nomnomnom...
  4. What's the point? by jeff4747 · · Score: 1, Insightful

    The problem is what's the point of Java?

    If speed is absolutely critical, you're going to go with C/C++/ASM/whatever native-compiled-language works well for your problem.

    If speed is not absolutely critical, there's plenty of "scripting" languages that get the job done more easily with less code. And if you're talking about something cloud-based, you can probably handle the lower speed of these options by adding another server node.

    Java seems to be in the middle ground where it's more cumbersome than the "scripting" options, yet slower than the "native" options. Leaving not much of a reason to choose it in the vast majority of cases.

    Java just doesn't seem to have much a a role today beyond "Google decided to use it for Android apps".

    1. Re:What's the point? by makq · · Score: 1

      The cool kids may not like it, but they can thank Java or more specifically the JVM for Scala.

    2. Re:What's the point? by Lennie · · Score: 1

      Well, there is a whole lot of Java in the enterprise and other organisations like banks.

      Obviously they are always last to move, because they have a lot of legacy applications anyway.

      --
      New things are always on the horizon
    3. Re:What's the point? by jeff4747 · · Score: 1

      And we can thank C for the kernel. Doesn't mean we have to choose C for new development.

    4. Re: What's the point? by bugnuts · · Score: 1

      The point was to provide a sandbox, among other things. That freed up a lot of issues with security (although we know how that story ended) and issues with operating systems.

    5. Re:What's the point? by MythMoth · · Score: 5, Insightful

      It's a compromise language. Compromises are, in fact, a good thing but purists hate them. Of course. That's what purism *is*. But really, who cares if it's cool? We're geeks, I thought we were supposed to be opposed to "cool" anyway?

      It's a known quantity and before you dismiss it you should consider the truly vast amount of software that's been successfully implemented in Java.

      Personally I like it. It has it's niggles (if I were king I'd change oh so many things) but it keeps on succeeding like most good compromises.

      --
      --- These are not words: wierd, genious, rediculous
    6. Re:What's the point? by Kkloe · · Score: 0

      rofl, you put scripting language as better alternative to java?, in what linux terminal have you been hiding for the last 8 years?

    7. Re:What's the point? by lucm · · Score: 1

      Who says you are a cool kid?

      --
      lucm, indeed.
    8. Re:What's the point? by Giant+Electronic+Bra · · Score: 4, Interesting

      The alternative view is that it is fast enough to do the things that need to be fast and cleaner than all those scripting languages.

      Here's the thing. Java applications are VERY EFFICIENT. It may be difficult (not impossible but a pain in the ass) to write Java code which performs a specific task in a deterministic period of time. In other words it is not really a real-time sort of thing. OTOH if you want a perform a large number of operations with maximum overall throughput and a fairly stable task completion time then you cannot beat Java. You could do it in C/C++, but you'll spend a lot more time and effort to get the same results. 10 years I coded large high capacity high speed feed handlers in Java and people said I was crazy, but that application continues to exist and outperform anything that tries to rival it while being highly portable, scalable, and superbly reliable.

      The thing with scripting languages is they are for small projects. Sure, its MUCH easier to whip out a perl script or something to do a small job. Its faster at run-time as well, but as soon as that task grows to somewhere in the 5-20k lines of code range you simply cannot do it using a scripting language anymore and stay sane. Inconsistencies creep in, problems pile up, the code starts to have to be used and understood by many people, and its just not possible to maintain the level of determinism required of a large code base. At this point you NEED something like Java.

      And yes, C# is a perfectly nice language, but it is only really usable on Windows in any consistent fashion. I see no reason to be limited to that platform. Most of my customers are perfectly comfortable with *nix systems and for high reliability high capacity line-of-business applications no version of windows holds a candle to RHEL and isn't even on the same planet with Solaris.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    9. Re:What's the point? by Anonymous Coward · · Score: 0

      There are many more scripting languages than shell scripting.

    10. Re:What's the point? by Anonymous Coward · · Score: 0

      Hopefully you're joking, but if not: He clearly means interpreted programming languages, not exclusively shell scripts.

    11. Re:What's the point? by wispoftow · · Score: 1

      Because *some **people ***are &sick and *(&tired) **of *all &of ***the ****bullshit &that **goes &with writing C and C++ in order to get an order of magnitude performance increase over those dynamic languages that you allude to.

    12. Re:What's the point? by mlw4428 · · Score: 1

      "The problem is what's the point of Java?"

      The problem being solved isn't speed. Most of the scripting languages of yesteryear were very limited or restricted to specific platforms. The problem being solved is cross-platform development.

    13. Re:What's the point? by bill_mcgonigle · · Score: 3, Insightful

      If speed is absolutely critical, you're going to go with C/C++/ASM/whatever native-compiled-language works well for your problem.

      If speed is not absolutely critical, there's plenty of "scripting" languages that get the job done more easily with less code.

      Yeah, this is how most 2+-sigma programmers on the right side of the standard distribution of programmers approach problems.

      All the rest (the vast majority) need languages with good error messages, good error landing, decent garbage collection, a lack of value/reference handling, etc., and frankly being more procedural than functional is an asset to a below-average programmer.

      Code density is not the criterion most mid-level enterprise IT managers need to deal with. Even with a complex project and a team, you can take one guy and have him write the JNI bits in C++ for performance (BTDTGTTS) while the rest of the team handles other parts and they don't have to know as much. It's actually really bad economics to have all top-notch programmers on your team if your project does not require that.

      And before all you kids who got trophies for losing a soccer game get into a snit - by mathematical definition, half of all programmers are below-average.

      And Java works pretty well for them, and there are stable and scalable deployment platforms for their code. Expect the "cool kids" to be wondering about Java in 2024 - even if there were a better replacement available today (there isn't), the extant code bases would not get replaced in one decade.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    14. Re:What's the point? by Kagato · · Score: 1

      I think that's a pretty dated view of Java. If I'm writing a web service endpoint most of the heavy lifting happens with some very simple method/class @Annotations. My controller classes tend to be in the tens of lines, not hundreds of lines.

      The days of writing a some inordinately overthought out factory pattern are long gone for a lot of stuff and the JVM does all sorts of optimizations to make the performance gap between VM and Native pretty small.

    15. Re:What's the point? by Anonymous Coward · · Score: 0

      No, but there isn't really any other option for cases where cross-platform is important. Java has been around for years now and it mostly works. Now, there are the regular security vulnerabilities that definitely do need to be fixed. But there really isn't any viable competition at this stage. Scripting languages are fine, but they do have some serious drawbacks. Not to mention the fact that the install procedures tend to leave something to be desired. Meaning that most non-tech savvy users aren't going to have or be able to install it.

    16. Re:What's the point? by fnj · · Score: 1

      Why won't anyone just SAY it? Python. It's clear he meant python. Sure as hell not perl or awk.

    17. Re:What's the point? by msobkow · · Score: 1

      The "point" of Java is portability amongst vendors. It was never designed to be the fastest, most scalable, or most elegant language on the planet. It was designed to be portable.

      And it succeeds at that goal, for the most part, so it is and continues to be used widely.

      Don't confuse the extensions of the JEE environment or the various JCP packages with the core of Java's mission: running business code across diverse platforms.

      Or have you forgotten Java's original tag line? "The Network IS The Computer." And the network includes all kinds of platforms.

      --
      I do not fail; I succeed at finding out what does not work.
    18. Re:What's the point? by Anonymous Coward · · Score: 0

      "If speed is not absolutely critical, there's plenty of "scripting" languages that get the job done more easily with less code. And if you're talking about something cloud-based, you can probably handle the lower speed of these options by adding another server node."

      Why would you assume scripting languages are the best option for non performance critical software? Scripting languages are a poor choice for many applications because most scripting languages allow entire classes of bug to fall right through to the user blowing the application up in flames in their face that compilers catch and force you to deal with before the application is ever run.

      For this reason I'd tend to only recommend scripting languages for stuff that doesn't really matter if it does fail in this manner (i.e. something to automate a common task where you can spend time fixing it, or doing things manually if it falls over without much worry), or for prototyping.

      If I'm producing a client facing application in a professional capacity then I wouldn't even dream of using a scripting language, they're just not professional enough for that use case, and that's why anyone doing anything that matters (just about every bank, every major tech company) uses languages like Java, C#, or as you say for stuff where they need more control, C++.

      Your defaulting to scripting languages tells us that you really do not know much about selecting the optimal tool for a specific class - your mindset is what has companies left and right being hit by common vulnerabilities that shouldn't even exist in modern software because it's being written with a shitty scripting language that discourages professional grade development.

      Besides, even your performance argument is broken, if Java/C# run for example, 2% slower than C++, then a scripting language will often run at least 5% slower. Sometimes 2% is an acceptable trade off to gain faster development times, but 5% or more with a decrease in software quality is not an acceptable trade off.

    19. Re:What's the point? by fnj · · Score: 1

      Java cleaner than python? Tell me you're kidding.

    20. Re:What's the point? by DoofusOfDeath · · Score: 3, Interesting

      If speed is not absolutely critical, there's plenty of "scripting" languages that get the job done more easily with less code.

      A big problem with duck-typed scripting languages, such as Python, is that the absence of explicitly stated type requirements in the source code. Using types in function signatures and variable declarations is an extremely useful tool for developers to indicate not only how a system is decomposed, but also what potential future usages they intend to support vs. not support.

      I've worked on reasonably large Python, C++, and Java projects. The Python code was by far the hardest to make sense of due to the duck typing and other Python idioms (metaclass, i.e. self-modifying code).

    21. Re:What's the point? by Anonymous Coward · · Score: 1

      Advantages of Java:
      - It comes with a lot of classes that can be used. E.g. string manipulation is much more pleasant than what it is with C++ (sorry, I don't know about the new C++ versions, perhaps situation has improved). Creating threads is also on a different level. And exceptions are very useful. When I started learning Java, I didn't understand unchecked vs. checked exceptions so I hated the exceptions at first.
      - JUnit. I have never met a language where unit testing is as simple as it is with Java + Eclipse.
      - Maven. Yeah, I know all the trouble it gives, but still, would you rather compile your own dependencies like you do in C++ Windows, or just execute the maven and get everything downloaded for you?
      - Static analysis. There are many tools for C++ and other languages, but for some reason I think that e.g. Findbugs is ahead of them.
      - Refactoring tools in Eclipse. I have never seen anything coming even close. I can cut and paste to create new classes, I can highlight code to create a method, I can rename anything. I can find a class with its name. I can automatically fix imports (hello C++). etc.
      - It is fast enough for almost anything that runs on PC.
      - It is cross platform.

      Disadvantages:
      - It is slow to start (if it wouldn't be, I would replace even Python with it)
      - Oracle
      - Memory allocation is too difficult. It would be nice if you could just write to the start of the application "allocate 2 GB of memory for the JVM", but this is not possible for the obvious reasons (I know there are work-a-rounds, but that doesn't make it easy)
      - There is a lot of deprecated luggage in Java, e.g. classes and methods that should not be used, but are still there for backward compatibility.

      I have used quite many different languages since the age of C64, but Java is the language I enjoy using the most. Especially with Eclipse. Not because Eclipse starts so fast or because it is so bug free, but because Refactoring tools, debugging tools, everything that makes my work more easy.

    22. Re:What's the point? by jader3rd · · Score: 1

      Java seems to be in the middle ground where it's more cumbersome than the "scripting" options, yet slower than the "native" options. Leaving not much of a reason to choose it in the vast majority of cases.

      Compile time type checking is a major reason to pick Java over a scripted language. It's not like performance requirements are binary either. There's a lot of distance between optimized assembly and runtime type checking scripts.

    23. Re:What's the point? by TFlan91 · · Score: 1

      I disagree, Nodejs has done a tremendously good job on being easy to use for all ranges of expertise.

    24. Re:What's the point? by fnj · · Score: 2

      by mathematical definition, half of all programmers are below-average

      Come on, elementary math. That's not true. Half of all programmers are below MEDIAN. If you don't care enough to get THAT right, I'm not going to bother with the rest of your assertions.

    25. Re:What's the point? by drolli · · Score: 2, Informative

      The point of java is that you can program more devices on this planet in this language than with anything else.

      Java has penetrated all areas of computing, from embedded (down to chipcards) to mobile, from science to database and web servers.

      Java has inherent cross-platform mechanisms for elementary things for which c does not have these (treads), and there are (most of the time free) libraries inferfacing in all directions.

      Dynamic, standardized binding to databases and XML makes it extremely easy to persist you data in a well-documented and well-tested structured way.

      Java has nearly all language features you could desire.

      And last but not least: eclipse is a great free IDE. AMong the free IDEs there is IMHO no combination of language+language tools which boots your productivity for specific tasks as eclipse does.

    26. Re:What's the point? by toejam13 · · Score: 2

      Both Java and C# are nice in that they give you more power than many scripting languages, while obscuring some of the headaches (read: pointers) that come with lower-level languages like C. Both are [IMHO] also cleaner implementations of an object-oriented language than C++.

      Another benefit of Java and C# are in their standard libraries. They're a bit more refined and a lot more consistent than the standard libC library. There has been a huge amount of drift in the libC world since wchars, long longs and safer array handling functions have been adopted. When writing portable C code for both Visual C and Klang, I'm constantly having to write wrapper code that deals with missing, renamed or depreciated functions on either the Windows or BSD side.

      Lastly, if your Java or C# apps are speed sensitive, you just do the same thing that people have been doing with C and C++ for years: run your code through a profiler and then write your time critical code in a lower-level language that you call as an external procedure. I haven't written a large app entirely in ASM since my Amiga days (even then, it wasn't the norm).

      When learning a new language, students shouldn't have to worry about if Getopt() is a valid function or not. Save that for a more advanced class. With Java, you can assign homework and know that students with Windows, Linux, BSD or MacOS will have the same environment. And in the real world, Java and C# eliminate some of the hassles of the C and ASM worlds, while still allowing you to reach back using external calls when needed. I really do find myself programming in C and C++ less and less every year.

    27. Re:What's the point? by Anonymous Coward · · Score: 0

      The IDE (Android Studio) for Android development are slow, because every time I click File->New Project it garbage collects on me because it is written in Java.

    28. Re:What's the point? by Anonymous Coward · · Score: 0

      Utter BS.

    29. Re:What's the point? by narcc · · Score: 0

      I tried to say Python, but I threw up instead.

      As I understand it, it's not an uncommon reaction.

    30. Re:What's the point? by narcc · · Score: 2, Insightful

      Yeah, I'll agree with that. I think you're simply too dazzled by the "coolness" of python to see it's many, many, terrible warts.

    31. Re:What's the point? by jonathan_ingram · · Score: 1

      As you have only been introduced to elementary math(s), you may not be aware that median is also an average. Half of programmers *are* below average using one of the three usual rivals for 'average'. It would be hard to use mean, as it's not clear that you could find a rating system for which using mean would make sense.

      Of course, it's not clear that there is any sensible numeric rating scale for programmers, and it would be interesting to argue about what the modal average would be, but it's just a throwaway comment which doesn't need to be analysed in such depth. The meaning and sense of the comment is clear.

      If you are going to play the role of overly pedantic nerd, at least do it correctly so you don't get laughed at.

    32. Re:What's the point? by Anonymous Coward · · Score: 0

      Google should make a faster IDE called Android Studio Lite.

    33. Re:What's the point? by Euler · · Score: 1

      Or visual basic

    34. Re:What's the point? by Anonymous Coward · · Score: 0

      The point of Java was a general-purpose OO language in the late 1990s that wasn't C++. Java is safer, more portable, and lacks C++'s design flaws. Java is also a real-world language, with pragmatic features C++ lacked. While C++ was originally the successor to C as the Language of Choice, its missteps in the 1990s left the door wide open for programmers who needed a better, more modern language. They did not get what they wanted, but got Java, and it is good enough. Java must be doing something right, because Microsoft cloned it with C#, and even Apple is moving away from Objective-C to Swift.

    35. Re:What's the point? by buddyglass · · Score: 1

      He may have assumed the normal distribution.

    36. Re:What's the point? by Anonymous Coward · · Score: 0

      It's simple and not really a language thing IMHO.

      If you need reasonable responsiveness while maintaining a large heap (meaning heading toward 16GB to 32GB live data or beyond) the JVM is the *only* option if memory safety is required for your application (which means garbage collection because eliminating use-after-free is a key part of memory safety).

      Once you are in that territory all of the other GC'd options fall apart; you are left with off-heap manual memory management, C or C++. Off-heap memory management without solid layout control is worse than just using C and C++ in many ways. Node, Go (GC has long pause times over 4GB), Ruby (worse than Go), Python (absolutely terrible performance in the large), and so on simply do not play in this space. Of those, only Go really has a good multithreading story.

    37. Re:What's the point? by bill_mcgonigle · · Score: 2

      He may have assumed the normal distribution.

      It's OK - the poor guy has obviously never been exposed to elementary statistics or he would have recognized what a sigma refers to. I do think it's fair to assume a certain base level of education on Slashdot - it is a nerd site after all. But what a great example of the Dunning-Kruger effect in action!

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    38. Re: What's the point? by bugnuts · · Score: 2

      A counterexample would be skill levels (3,1,3,3,7) with a median of 3 and mean above 3. In neither of those definitions are half below average, being 1 or 2, and 4.

      Simple math would say at least half would be less than or equal to the median.

      Of course, simple math rarely works here to quantify except at the extremes. People have different abilities in different areas, and gray matter is plastic. It changes, and even that rate of change matters.

    39. Re:What's the point? by Anonymous Coward · · Score: 1, Insightful

      What do you mean by "cross-platform"? Java isn't available on iOS, it isn't really available on Android, OSX comes (used to come?) with outdated versions where a lot of Java programs don't run properly, Linux comes with OpenJDK which doesn't run quite a lot of Java programs either (try using the typical Java-based VPN solutions for example).
      It's "cross platform" only if your definition is "it's a huge pain and doesn't work properly on any platform without extensive workarounds", which is a step below e.g. C++ with Qt source code (empasis on source code though).

    40. Re:What's the point? by buddyglass · · Score: 1

      You could meaningfully refer to "2+ sigma" developers without assuming a normal distribution, though. So his criticism is "sort of" valid given you never explicitly stated you were talking about a normal distribution. Maybe the distribution of of ability among developers is skewed right, in which case more than half of them are "below average".

    41. Re:What's the point? by sjames · · Score: 1

      Perl is best kept to small projects. Not too surprising, it was meant to be a report generator.

      However, there's no good reason not to use Python for a large project. It is not at all hard to write clean and well documented Python. It is, of course possible to write a complete mess as well but that's true of any language.

    42. Re:What's the point? by Anonymous Coward · · Score: 0

      Easy, except, you know, the whole completely and utterly shit language. Fuck, I'd pick java over javascript every day, and I despise java.
      And you forgot professionals in your "all ranges of expertise". And I'm not mentioning professional hustlers who had managed to convince people to run javascript serverside. That's just... evil.

    43. Re:What's the point? by Anonymous Coward · · Score: 0

      An allergic reaction to good languages? Consult your local physician for a dose of antihistamines.

    44. Re:What's the point? by Aighearach · · Score: 1

      They used COBOL until they were talked into porting to Java, it is a hard sell to convince them they need to change languages again. Every language they ever used sucked, and they used what the Experts told them to use.

    45. Re:What's the point? by Euler · · Score: 1

      Mean == average (sum of samples / number of samples)
      Median == 50th percentile within the set of samples.
      Mean != median (unless by chance the distribution is symmetrical.)

      When an even number of samples exists, the common practice is to find the median between the two central samples by averaging the two. But that does not imply an average of the whole data set.

    46. Re:What's the point? by Anonymous Coward · · Score: 0

      It's not just speed, it's determinism. Real-time doesn't mean "real fast." It mean predictability. Languages like C, C++, Ada, and Fortran have it. Sh*t languages like C# and Java do not.

    47. Re:What's the point? by Aighearach · · Score: 1

      Well, Ruby is a "scripting language" but then it turns out that you can implement everything in plain C libraries, and just put the business rules in the "scripting" language. And in fact that is how problems are approached. There is no need to switch languages for the project, you can switch languages on a modular basis, as long as the core application language is dynamic and can interface easily with the parts.

      "Scripting" can mean "scripting" or it can mean "glue," or just "dynamic."

      IMO there are real advantages to having the more static parts in C, and the more dynamic parts in Ruby/Python/Perl/whatever. Though some languages you need an extra glue language to glue the C in, that is why I don't use Perl.

    48. Re:What's the point? by Aighearach · · Score: 3, Informative

      Java cleaner than python? Tell me you're kidding.

      It is meaningless to argue that one unless you attempt to define "clean," and then both sides will turn out to be using different meanings. Using his meaning of clean you'd probably be forced to agree with him; and using yours, he would likely agree with you.

      Is boilerplate dirty, is it cruft, or is it O(1) stuff that isn't even counted and is effectively free? That is the real underlying issue. If boilerplate is cruft, then Java isn't clean. If boilerplate is free and to be ignored, then Java is still verbose, but clean.

      Most people who ignore boilerplate probably are using tools that write most of it for them anyways, which brings in its own issues and differences of opinion.

      Of course he totally ignores the possibility of using efficient methodologies to write large codebases using "scripting" languages. It certainly can and is done. But you can't hire Dilberts to do it, the way you can with Java. If you're planning to be undisciplined except for the what the language forces you into, then he's right.

    49. Re:What's the point? by Anonymous Coward · · Score: 0

      Then he should have said 'mean' and not 'average'. I dismiss his arguments out of hand for not using the correct term. Half the people are not necessarily below average, but are necessarily below mean. There is a reason they have two different words for those concepts. I didn't think I'd have to point that out to someone so obviously smart as you. As well as sounding like a smarmy asshat, your argument that ambiguity is acceptable in a debate invalidates your answer too.

    50. Re:What's the point? by Aighearach · · Score: 1

      You cite the advantage of duck-typing as its problem, that tells me you just don't understand the use cases.

      Duck typing, done correctly, does not simply give up having defined interfaces, that would be silly. So silly that it would make your criticisms true!

      In duck typing, you check if an object has the parts of an interface that you're going to use, instead of checking if it is some named type that presumably has the interface you want to use. The different parts of an interface that go together are also grouped together in code. Just as using static types is a useful tool that tells you how a system is decomposed and what behaviors are likely to be supported, the lines that include the packages of duck-typed behaviors also tell you the exact same thing.

      Just because you're not forced to only have pre-defined interfaces does not mean you are prevented from actually defining your interfaces in advance, and using that information in your tools. In fact, fans of duck typing often feel that it enhances this ability, by being able to combine defined interfaces more freely.

    51. Re:What's the point? by theshowmecanuck · · Score: 1

      Netbeans is better. It does all that out of the box, without needing so many plugins. [ducks and waits for the fallout]

      --
      -- I ignore anonymous replies to my comments and postings.
    52. Re:What's the point? by photonic · · Score: 1

      There is currently an enormous discussion going on at python-ideas (see various large threads towards the bottom). Guido himself seems to be in favor of including something like MyPy into Python's standard library, which is allows for optional specification of arguments and return types using function annotation. The main use would be for static/offline code analysis/linting.

      --
      karma police: arrest this man, he talks in maths; he buzzes like a fridge, he's like a detuned radio. [radiohead]
    53. Re:What's the point? by Giant+Electronic+Bra · · Score: 4, Insightful

      Yeah, sorry, I maintain LARGE complex code bases. There's zero chance that's going to be easier using a loosely typed language with porous ideas of module boundaries, etc. I've been there, and a well-architected system built with a classic OO language like Java is just a lot more manageable. Also a lot of the advantages in brevity of things like Python or Perl evaporate when you try to apply some sanity to their use, but the disadvantages are still there to bite you. A 500 line Perl script is undoubtedly a LOT more compact and succinct than some java app built to do the same thing, which will be 2-3 thousand lines long probably. But when you start building well-designed class hierarchies in Perl? You're code will rapidly become just as large and verbose as its Java counterpart. Python and Ruby aren't better, in fact no scripting language will improve on this because all that stuff is NEEDED at scale. I'm an exceedingly accomplished Perl programmer and I can certainly code in other 'P languages' perfectly well, but they aren't the same thing. Each tool to its place.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    54. Re:What's the point? by bruce_the_loon · · Score: 1

      You've got a dangling pointer in there. Just one. I'll leave you to find it before it dumps the stack via the VGA IO space.

      --
      Trying to become famous by taking photos. Visit my homepage please.
    55. Re:What's the point? by Giant+Electronic+Bra · · Score: 4, Informative

      I've written a lot of code in the 'P languages' and I don't really believe that anymore. A 15k python app might be perfectly fine, but loose typing and the lack of a standard error handling strategy bite you in the end. I don't actually think that Perl is any weaker here than Python. You may be more familiar with one and comfortable with it, but I've written some pretty large programs in Perl. It HAS the tools, and I'm not the only one. Ruby is probably the cleanest of this sort of languages, but its still things like loose typing and the attendant inability to enforce calling semantics that hurts in all cases the most. When I write Java I know that if I call a method I have the right type of arguments at least, and that if somehow I manage to partially subvert that with reflection or whatnot that my error will be quickly outed by the run time. In dynamic languages you really don't know what the data is supposed to be until something goes wrong. Mostly though you lack the ability to have your IDE vet everything, you can't do static validation, etc. On big projects things like code validation, test coverage, etc are big deals, as is code GENERATION for that matter. All of these things are vastly better supported and easier to do in a statically typed language like Java.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    56. Re:What's the point? by Anonymous Coward · · Score: 0

      That's a function of the operating system, not the language. If you can't reliably know how long it will be before your handler will be called by the OS after an interrupt happens, you can't do real-time, regardless of your language.

    57. Re:What's the point? by sjames · · Score: 1

      Duck typing is a mixed bag. You can make the requirements clearer in comments and the doc string. It also has great advantages in being more concerned with attributes than declared type or lineage. It allows modules to deal with classes that weren't even imagined when they were written.

    58. Re:What's the point? by Anonymous Coward · · Score: 0

      The problem being solved is cross-platform development.

      That is what it attempted to do and how it was marketed. As for solving the problem I'm not convinced that Java is the right choice.
      If you want something to function well on multiple platforms you might even be better off using C than Java.

    59. Re:What's the point? by Anonymous Coward · · Score: 0

      If that's what your C/C++ code looks like you I wouldn't be surprised to learn you're sick of it because you keep getting sacked.

    60. Re:What's the point? by Anonymous Coward · · Score: 0

      Also, the median and the mean align for any symmetric distribution, not just the normal. You need non-zero higher moments - at least a skewness - to get them to disagree.

    61. Re:What's the point? by DoofusOfDeath · · Score: 3, Interesting

      Duck typing is a mixed bag. You can make the requirements clearer in comments and the doc string. It also has great advantages in being more concerned with attributes than declared type or lineage. It allows modules to deal with classes that weren't even imagined when they were written.

      The problem is that by an large, code can't be automatically checked against doc strings. (If it could be, then you'd just have a classic type system again.)

      As far as supporting unplanned extensibility, it seems to me that interfaces (or pure virtual base classes in the case of C++) provide that functionality in more statically typed languages, so I don't see that as an advantage peculiar to duck-typing.

    62. Re:What's the point? by tomhath · · Score: 1

      There's zero chance that's going to be easier using a loosely typed language with porous ideas of module boundaries

      Nonsense. The typical Java project is a big steaming mess of factory classes, wired beans, annotations, aspects, xml, and all the other workarounds that are needed to give the same functionality that's built into dynamically typed languages. And you still get logs overflowing with run time exceptions.

    63. Re:What's the point? by Anonymous Coward · · Score: 0

      Speed, less verbosity and access to all java libs. Groovy/Grails. BAM!

    64. Re:What's the point? by Anonymous Coward · · Score: 0

      Why not just implement the whole thing in Java instead of having two different languages with probably different build systems, different programming paradigms and a slew of interop code in between? Java is high level enough to fill the ruby role and fast enough to do the C part.

    65. Re:What's the point? by JoeMerchant · · Score: 1

      Gotta throw my perennial plug in for Qt/C++ for portability. As long as your target is desktop only, Qt is super portable, mature, and relatively complete.

      Yes, they are just starting to get into serious mobile support, and I notice a lot of the "completeness" suffering as this transition takes place (old libs like QFtp are now "an exercise for the programmer" to port and include in Qt5 based projects.)

      We had a Qt vs Python vs VB/Excel contest once - effort was roughly similar between the three to really do the job at hand, VB only won because the start and end point for the data was in Excel. The thing I find about most language comparisons comes down to "where is it socially acceptable to cut corners?" The scripting languages are very oriented toward the quick and dirty, zero error checking, zero declaration, zero structure programming - and if that's what you want, great. C++ enforces declarations and type checking on you - which, if you're doing anything of size, you actually do want. By the time you beef up a Python script to handle the edge and error cases and do all the stuff that the C++ program is probably doing at default level, then the Python isn't so quick or slick anymore.

    66. Re:What's the point? by JoeMerchant · · Score: 1

      What would slashdot be without arguments over semantics?

      A hell of a lot smaller.

    67. Re:What's the point? by Anonymous Coward · · Score: 0

      This so much. People tend to confuse verbosity with not giving you a simple API to do scripting language stuff out of the box. If you want to do one-liner file IO and regexes so badly, write yourself a library to do it. Java is not innately verbose (well, it can be with exception handling and null pointer guards, but that's another topic for another day), it's just the standard library that often is. That's why the first thing you do when starting a new project is to include apache commons.

    68. Re:What's the point? by Anonymous Coward · · Score: 0

      Java is a way to minimize the importance of programmers. It's main point is that it fits the corporate world perfectly and the corps ran to it because they really didn't like having programmers matter. Now they can drop you like a hot potato and replace you much easier with faceless programmer #2346. It's not perfect yet so there is still talk of visual programming and all the "blocks" bullshit, but the point is to make us totally interchangeable as they possibly can.

    69. Re:What's the point? by Giant+Electronic+Bra · · Score: 4, Interesting

      LOL, I don't know what sort of disasterously bad Java shop you work for... I've got a VERY large Java code base. We use a number of the tools you mention and they are quite powerful and useful. There's nothing in the 'steaming mass' category about it. Perhaps you need some new developers! OTOH The last big project I did with a dynamic language became hideously complicated with constant undocumented dependency issues and bizarre almost untraceable bugs that it was finally just literally delivered by the prime contractor as it was. Luckily the whole issue became largely moot as external forces cut the project back. It IS still in use, 7 years later, but if I were to do that sort of project today I wouldn't even consider a dynamic language. Not with the schema complexity and other aspects of it as it was. Java has a vastly more powerful infrastructure for dealing with complex data for one thing.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    70. Re:What's the point? by gbjbaanb · · Score: 1

      which is, ironically, exactly how Java got to be so popular in the first place.

    71. Re:What's the point? by sjames · · Score: 1

      Virtual base classes are VERY limited in comparison.

      Unless calling functions when you don't know what they are has become common practice these days, why do you need the IDE to tell you what the docstring says. If you program with the assumption that whatever the IDE doesn't reject is permitted, bad things will happen.

    72. Re:What's the point? by Giant+Electronic+Bra · · Score: 1

      Yeah, I'm a fan of QT, always have been. I haven't done a lot of C++ stuff in many years (it predates even QT1 if you can believe that). Our Java stuff in general doesn't have a desktop UI with a couple minor exceptions, so for my particular use case Java makes sense. I think in general C++ can often replace Java, but it CAN be a lot of work. Our apps are very long running stuff that churns through vast amounts of data constantly and requires high reliability. So if we do something in C++ then there's an added 50% "C++ Tax" just to find the 500,000 memory leaks and such. In GUI apps they don't matter much unless their really serious, but in my line of work if you loose 4 bytes per UDP datagram you'll be out of 32 gigs of RAM in a pretty short time! And each one of those suckers runs through probably 20-30k LOC worth of logic, so there's a lot of chances for fuck ups.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    73. Re:What's the point? by narcc · · Score: 1

      An allergic reaction to good languages?

      Not at all. We're talking about Python here.

    74. Re:What's the point? by sandertje · · Score: 1

      I have to agree with him, and I use Python on a daily basis. When using Python for anything larger than a few thousand lines of code, it really becomes necessary to switch to something more, well, stable. There's several options, and Java is one of them. When you start typing assert statements everywhere, that kinda defeats the purpose of using a dynamically typed language, and tells you it's time to switch to something more robust to begin with.

      That doesn't mean Python is a bad language. I, in fact, love it. But it's not suitable for every use case. Just like Java ain't. Using the correct tools for the job is a better paradigm than sticking to your favorite language just because.

    75. Re:What's the point? by RabidReindeer · · Score: 1

      The problem is what's the point of Java?

      If speed is absolutely critical, you're going to go with C/C++/ASM/whatever native-compiled-language works well for your problem.

      The 1980's called and they want their outdated assertions back.

      One thing that Java does that "native-compiled" languages do not is provide an environment where code performance can be monitored and optimized automatically on the fly.

      An example: Back when instructions typically took a determinate number of CPU cycles, a conditional branch instruction might take 2 cycles for no-branch and 3 cycles for a branch. If you were clever, you coded for the case where the no-branch result was the default. But if you guessed wrong or conditions changed, you were stuck with the "wrong" code and thus sub-optimal. A good JVM can sense that and rewite the code, flipping the branch to the more optimal state.

      A JVM is no light thing to crank up and operate, so you cannot expect benefits from small simple programs. But as apps get bigger, more complex, and longer-running, the balance changes. It's prohibitively expensive to re-optimize a complex system by hand, but doing so automatically can be much cheaper as you scale up. The same sort of result improvements have been benchmarked between brute-force manual SQL and ORM systems.

      Yes, Java is cumbersome. I don't use it for quick-and-dirty stuff. I do use it for industrial-grade work where robustness, security, and scalability are important, especially since there is an extremely rich add-on and support environment for it.

      And, of course, for Android, since Android is optimized to run Java.

      Scripting languages are my bane. As I mentioned elsewhere, they make you look more productive than you are. And they're almost universally terrible at preventing many common errors that a more rigorous (a/k/a/ less "productive") language can easily detect before they infect something critical.

      But, speaking of outdated assertions, a lot of scripting languages also compile to machine code these days. And when not, often to something quite close to it.

    76. Re:What's the point? by Anonymous Coward · · Score: 0

      If cross-platform development is the problem, then the Java is definitely not an answer.

      I've never seen a language that is less portable than Java. A Java application needs to run on very specific version of an operating system and very specific versions of a Java interpreter. A C binary application is able to run on more devices.

      A Java application is only portable if you have the source code so you can recompile the application for your specific platform, and hopefully your platform has a Java interpreter.

      Yes, I am getting angry, the 'cross-platform' reason has been said by the church of Java since 1995, it wasn't true then, it still isn't true.

      Java is the worst of all the worlds.

    77. Re: What's the point? by Anonymous Coward · · Score: 0

      Amen.

    78. Re:What's the point? by putaro · · Score: 2

      OK, that's bullshit.

    79. Re:What's the point? by Anonymous Coward · · Score: 0

      Nitpick: Python is strongly, dynamically typed. "Loose" usually means "weak", but it's vague enough that I just don't use it.

      Remember, a 15k Python app might be a 50k Java app. Less code is a huge benefit. I don't know what you mean by "lack of a standard error handling strategy".

      And you should probably not be doing code generation with Python. Part of the tradeoff you're making with most dynamic languages is that the runtime is also dynamic — i.e. you can create structure dynamically. You're paying the cost for nothing if you don't make use of that.

      My day job is working on a web app that's over a million lines of Python, some of it dating back almost a decade (and thus pretty terrible). I've done some pretty astounding refactors on it. I highly value being able to run the application even when I know I'm not finished, so I can see whether I'm on the right track. Letting objects fake other objects' behaviors without having to refactor everything to expect an interface is pretty nice too. So are context managers, decorators, the occasional metaclass. I can even wrap arbitrary objects and add behavior without ever having to know what type they are!

      I don't know that I'd want to maintain a million-line Java application.

      I get the appeal of static typing, really. I would love that peace of mind. But most of our type systems are a joke. C is almost as weak as Perl. Java allows virtually any value to be null, so all your static type annotations are lies. Go doesn't even have generics!

      I can't use a statically typed language without being constantly pelted with reminders of their limitations. No, you can't compile that, you didn't use quite the right punctuation in the type name. Sorry, I couldn't protect you from that null pointer, even though I have decades of research and all the source code available to me. Oh, you want a type that could be one of several types? Have fun with those runtime downcasts, or null pointers, or whatever.

      I hope Rust wins me over. Or I guess there's always Haskell. In the meantime, at least Python doesn't spin me tales about how safe it's going to make me.

    80. Re:What's the point? by RightwingNutjob · · Score: 1, Informative

      Exactly. Java programs aren't multiplatform. They're single platform: the JDK/JVM that you compiled with/for. If you're done everything on Sun Java 1.5, and suddenly Oracle changes it to "Oracle Java" 1.6, you're SOL.

    81. Re:What's the point? by BitZtream · · Score: 1

      Doesn't mean we have to choose C for new development.

      Yet its still done, often, for reasons that are obvious if you've got a clue and the right requirements.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    82. Re:What's the point? by Wootery · · Score: 1

      It has it's niggles (if I were king I'd change oh so many things)

      You're not the only one.

    83. Re:What's the point? by Anonymous Coward · · Score: 0

      Perl is best kept to small projects. Not too surprising, it was meant to be a report generator.

      And Python was meant to be used to teach people how to program. Both languages' capabilities have grown far beyond what they were meant to be.

      However, there's no good reason not to use Python for a large project. It is not at all hard to write clean and well documented Python.

      Nor is there any good reason not to use Perl for a large project. Likewise, it's not at all hard to write clean and well documented Perl.

      Good project management techniques become more important as a program gets larger. The tools that are available to help with that can make the difference between success and failure. There are many excellent, mature tools for both Perl and Java to help with debugging, profiling, testing, and deployment. I'm sure the Python community has developed equivalent tools.

    84. Re: What's the point? by Anonymous Coward · · Score: 0

      Perhaps he is assuming a normal distribution :p

    85. Re:What's the point? by putaro · · Score: 1

      The question is, who is "you" and when does that checking happen? I don't do a lot of work in Python, Ruby, etc. and all of the programmers that I know who do are fairly young and working on fairly small projects so they don't have a good answer for refactoring.

      If I change the arguments to a method in a statically type language any place where I forgot to change the call to that method will be exposed at compile time. As far as I've been able to learn so far, in most dynamically typed languages that check won't happen until runtime. The pat answer to that is "you should have unit tests that cover everything" - but getting complete code coverage is hard and for large projects, the test suite takes a non-trivial amount of time to run - usually much, much longer than compile time. So, you wind up with bugs at runtime. Or is there a better solution?

    86. Re:What's the point? by CauseBy · · Score: 1

      I like C# a lot. I wish people used it outside of Windows. Alas. I'll retire happy if I never touch Windows again, so C# is dead to me.

    87. Re:What's the point? by Anonymous Coward · · Score: 0

      I'd like to use C# on linux, but Mono has a fair share of odd bugs in the ActiveDirectory/LDAP implementation because it's using the buggy Novell libraries under the covers. I haven't even bothered to try it on OS X.

    88. Re:What's the point? by Anonymous Coward · · Score: 0

      > Here's the thing. Java applications are VERY EFFICIEN

      No. They're not. They're written with arbitrary levels of abstraction that the developers are *forbidden* from crossing, and get their grades lowered if they try to review the API's and peer beyond the micro-managed and usually poorly constructed task list.

      C# has many of the flaws of Java, with no benefit except being Windows optimized. Yeah, *that's* going to be stable like OOXML is actually followed by any software in the world.

      If you want high speed cross-platform compatibility, actually learn C. Not C++. C.

    89. Re:What's the point? by Anonymous Coward · · Score: 0

      Java has been plenty fast, even compared to C/C++, for quite some time now. The problem is how garbage collection will bring the JVM to a halt for a fraction of a second every so often. This isn't noticeable for most applications, but essentially eliminates Java from any sort of real time or embedded applications.

    90. Re:What's the point? by Actually,+I+do+RTFA · · Score: 1

      Duck typing is a mixed bag.

      Curious, let's see how.

      You can make the requirements clearer in comments and the doc string.

      I suppose that's the admitted disadvantage? That I can type more to have limitations enforced by humans instead of machines.

      t also has great advantages in being more concerned with attributes than declared type or lineage. It allows modules to deal with classes that weren't even imagined when they were written.

      You mean like interfaces would let you do?

      --
      Your ad here. Ask me how!
    91. Re:What's the point? by Bill+Dog · · Score: 1

      Heh, so Java itself is multi-platform, because each version of it is its own platform! ;)

      --
      Attention zealots and haters: 00100 00100
    92. Re:What's the point? by Jeremi · · Score: 1

      So if we do something in C++ then there's an added 50% "C++ Tax" just to find the 500,000 memory leaks and such.

      Just wanted to say that if you are careful to use a smart-pointer class (e.g. shared_ptr) rather than raw C-style pointers to hold dynamically allocated objects, 99% of your memory leaks (and other object-lifetime-managment related problems) will "magically" go away -- and without the overhead or random execution-pauses seen in languages that rely on a garbage collector.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    93. Re:What's the point? by sjames · · Score: 1

      Actually, no, they work much better. I can pass the latest whizz-bang object that just happens to have the right attributes in to the old library code and get it back out the other side without having it cast to a crippled shadow of its former self.

      As for the typing, if your project is big enough that you're actuallu worried about any of these issues, you should be properly documenting everything anyway.

    94. Re:What's the point? by sjames · · Score: 1

      And Python was meant to be used to teach people how to program. Both languages' capabilities have grown far beyond what they were meant to be.

      Actually Python was meant to be a general purpose scripting language for Amoeba. It was not a teaching language.

      Many things in the computer world end up used in ways that were never envisioned, and that's good. My comment on Perl was mostly one of fairness. It is certainly used beyond it's original purpose, but it isn't fair to blame it for any difficulties that may entail.

    95. Re:What's the point? by Anonymous Coward · · Score: 0

      But you can't hire Dilberts to do it

      Huh, I always had the impression that Dilbert was shown as a genius held back by incompetent management and with mostly social problems, after all he build fully autonomous robots, space shuttles, etc. . If he couldn't maintain a large scale python app nobody could.

    96. Re:What's the point? by julesh · · Score: 1

      The typical Java project is a big steaming mess of factory classes, wired beans, annotations, aspects, xml, and all the other workarounds that are needed to give the same functionality that's built into dynamically typed languages.

      OK, I'll bite. What built-in feature of ... let's say python ... allows you to replace the functionality of a factory class without needing to implement something that either is a factory class or is very similar to one?

    97. Re:What's the point? by julesh · · Score: 4, Insightful

      Java isn't available on iOS

      Yes, it is.

      it isn't really available on Android

      Bullshit. Android's implementation may not be completely up-to-date, but it is absolutely a version of Java. Only trademark and licensing issues prevent Google from claiming that it is.

      OSX comes (used to come?) with outdated versions where a lot of Java programs don't run properly

      Who cares what version is installed by default? OSX can be upgraded to the latest version, and any application that needs it ought to provide an installation package that does precisely that, or at least clear instructions to the user on how to do it.

      Linux comes with OpenJDK which doesn't run quite a lot of Java programs either

      As of version 8, OpenJDK is the reference implementation. Any Java program that doesn't run on OpenJDK is not a conforming pure Java application. Besides, it is perfectly possible to install Oracle Java on a Linux system if you prefer it. Depending on your distribution, it may be as simple as a single command, or you may need to add an update source first (which turns it into 3 commands on Ubuntu, for instance).

      It's "cross platform" only if your definition is "it's a huge pain and doesn't work properly on any platform without extensive workarounds"

      I'd hardly call any of these "extensive workarounds". Yes, you may have to refrain from using the latest APIs if you want to target certain platforms. Or you may have to have the end user install an upgrade to their preinstalled Java system. Neither of these is actually that hard.

    98. Re:What's the point? by julesh · · Score: 3, Insightful

      If you're done everything on Sun Java 1.5, and suddenly Oracle changes it to "Oracle Java" 1.6, you're SOL.

      ??? I've been writing Java applications since 1.1 was the current version, and I've never had one stop working with a version update.

      The only experience I've had with such failures are 3rd party applications where the developer has used the deprecated com.sun.* APIs. The guidelines on using these have been quite clear from the very beginning, though: don't, unless you want to create compatibility problems for your users.

    99. Re:What's the point? by dgatwood · · Score: 1

      I've got a VERY large Java code base. We use a number of the tools you mention and they are quite powerful and useful.

      Yes, and I have some relatively large Perl scripts that are readable and maintainable. These are the exceptions that prove the rule.... :-)

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    100. Re:What's the point? by julesh · · Score: 1

      Of course, it's not clear that there is any sensible numeric rating scale for programmers, and it would be interesting to argue about what the modal average would be

      Or even, indeed, that there exists a total ordering, the lack of which would make the notion of a median meaningless, too.

    101. Re:What's the point? by dgatwood · · Score: 1

      My biggest problem with Qt is the same as my biggest problem with Java. It's okay for in-house test tools, but it should never be used for actual end-user apps. You'll invariably end up with an application that doesn't quite behave like a native app, doesn't perform as well as a native app, and can't take advantage of advanced features of each OS without losing portability. In short, cross-platform apps written in this way almost invariably take advantage of only the least-common-denominator functionality common to all OSes, resulting in an app that sucks equally everywhere.

      There's only one right way to create a cross-platform application: by separating the core logic from the UI, and then hiring people who actually know how to write software for each target OS to designing a custom UI that conforms to the way that users on that particular platform expect an app to behave. Anything less will always be substandard on one platform at best, and on all platforms at worst.

      Now you could write that core logic in Java if you really want to (though you'll run into portability problems if anybody ever asks for an iOS port), but chances are, you're better off writing it in C or C++. Either way, using Qt or Java for the UI is IMO invariably a mistake unless you're just writing an app to meet your own personal needs.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    102. Re:What's the point? by julesh · · Score: 1

      Unless calling functions when you don't know what they are has become common practice these days, why do you need the IDE to tell you what the docstring says.

      Because it is well known that on any large project staffed by any but the most conscientious of developers, documentation has a tendency to become outdated. The type specified in statically-typed code, however, *cannot* be wrong.

      If you program with the assumption that whatever the IDE doesn't reject is permitted, bad things will happen.

      You don't program with that assumption: you program explicitly towards that goal. This is the Liskov Substitutability Principle, one of the most basic tenets of object-oriented programming: if an object of a given type is allowed in some operation, any object of any sub-type of that type should also be allowed. Code that violates this principle should be actively removed from your project whenever it is found.

    103. Re:What's the point? by julesh · · Score: 1

      I can pass the latest whizz-bang object that just happens to have the right attributes in to the old library code and get it back out the other side without having it cast to a crippled shadow of its former self.

      You can also pass any object that happens to have attributes that have been coincidentally named the same but don't necessarily have the same semantics, and wait for the entire system to blow up (which it may or may not do in simple test cases, depending on how closely the semantics happen to match).

      In reality, I don't find that unrelated classes tend to have methods or properties that share both a name and exactly the same semantic definition except where that similarity is intentional. When it is intentional, then usually the two classes will share an explicitly defined interface. On rare occasions they do not, it is trivial to write a wrapper for the objects, and the necessity of doing so is a good prompt to think about whether the definitions are in fact exactly the same.

    104. Re:What's the point? by sjames · · Score: 1

      You question the conscientiousness of the programmers in the first paragraph and assume it in the second.

      You should see the crazy type casting that happens in production code to please the IDE and/or compiler. It may or may not be the right thing.

      Then there's the cases where it is actually OK if not all objects passed in support all of the methods. Not Applicable might be the right outcome of a method call if the caller is prepared for that possibility.

    105. Re:What's the point? by sjames · · Score: 1

      You can also cast things around until the compiler and IDE buy it and wait for the SEGV.

      It's on the developer to know when they can and cannot get away with it.

      If you don't KNOW if class A and Bs X methods are actually compatible, what in the hell are you doing passing them around? You're supposed to know that. If you have a case where it may or may not be true and it's all OK, wrap it in a try..except and pick up the pieces at runtime.

      This would be a lot less of an issue if multiple inheritance was better supported, but it's not.If it was, I could write the module explicitly around class A. Later, given a class B that should work fine with the module, I could derive Bprime inheriting from A and B and it would be fine.

    106. Re:What's the point? by Anonymous Coward · · Score: 0

      Doesn't have to be Normal, just symmetric. :-)

    107. Re:What's the point? by Anonymous Coward · · Score: 0

      I hear Swift is just the Apple clone of Scala. ;-)

    108. Re:What's the point? by mcvos · · Score: 1

      The problem is what's the point of Java?

      If speed is absolutely critical, you're going to go with C/C++/ASM/whatever native-compiled-language works well for your problem.

      If speed is not absolutely critical, there's plenty of "scripting" languages that get the job done more easily with less code. And if you're talking about something cloud-based, you can probably handle the lower speed of these options by adding another server node.

      Java seems to be in the middle ground where it's more cumbersome than the "scripting" options, yet slower than the "native" options

      It's a pretty good middle ground, though. Java is almost as fast as C++ (10% slower back in the days of Java 5, I seem to recall). If you want speed in a managed environment, Java is a pretty good choice.

    109. Re:What's the point? by cheekyboy · · Score: 1

      I beg to differ, if a large solution requires say, 20 processes running, with common libs, and config files.

      Yeah do it in java, you could just as easily do it in perl, code it cleanly to look like java, no corrupted files. ie no short cuts.

      IF its requires 400 functions in java, then its equally possible in Perl. Doesnt have to be one file, you can make modules to do each task.

      A good design will be equally good in Perl and in Java. Just about every problem is really either converting large amounts of data from A -> B. or triggering events based on rules when processing any data.

      --
      Liberty freedom are no1, not dicks in suits.
    110. Re:What's the point? by LordWabbit2 · · Score: 1

      Couldn't agree more - worked at a settlement and clearing company and their messaging systems where java based, every now and then they would freeze up and stop processing messages. Logs were ~500mb of text - java devs would spend hours pouring through them trying to figure out why the system was hanging on occasion, AFAIK it's still hanging.

      --
      There are three kinds of falsehood: the first is a 'fib,' the second is a downright lie, and the third is statistics.
    111. Re:What's the point? by Anonymous Coward · · Score: 0

      The point of java is that you can program more devices on this planet in this language than with anything else.

      Citation needed.

      My contender for that title is ANSI C.

    112. Re:What's the point? by Anonymous Coward · · Score: 0

      Mostly agree, but GP hit on one thing, though. Where the hell is this XML-obsession in the Java world coming from? IMO, there's no upside to XML. Not readable by humans, bad to read for machines, so generic that you don't know what the hell it is supposed to do. And if I'm to "make" something in Java, I have to either use Ant (which is horrible to learn, but once you have the structure, it can be tolerated) or the steaming pile of disk and bandwidth thief that is called Maven. And both require you to do your "makefiles" in XML. Why oh why? (I'm not going to rant how much I hate maven here, though)

      My main gripe with java is the bad access qualifiers and the lack of a package hierarchy that actually means something. But I can live with those.

    113. Re:What's the point? by drolli · · Score: 1

      I talk about devices, you talk about microntrollers/processors.

      You can not program 1B android devices in ANSI C. You can not program java smart cards in ANSI C.

      Hypothetically, you could modify parts of all devices in ANSI C, but this this you essentially disassemble the device.

      I agree, if you interested in firmware development, ANSI C is probably the right choice.

    114. Re: What's the point? by tandavanadesan · · Score: 1

      I agree. Binary compatibility has always been 100%, and source code compatibility 99.99%. We did have some really code where someone had a variable called 'enum', the classes still ran but the variable needed to be renamed before r recompiling.

    115. Re:What's the point? by Anonymous Coward · · Score: 0

      Lack of standard error handling strategy in Python? Did you ever write a single line of code in Python, or are you confusing it with PHP? It starts with P, must be that.

    116. Re:What's the point? by Anonymous Coward · · Score: 0

      The still use COBOL (and PL1). Compared to that, Java is a huge upgrade.

    117. Re:What's the point? by Anonymous Coward · · Score: 0

      The part that no one says about Java is that you can avoid all that you described if you want. Young kids love to fill their code with factorys, getters and setters and etc, but you do not need to follow their example.

    118. Re:What's the point? by JoeMerchant · · Score: 1

      One thing I have learned to love about QObjects is their family tree and how it (mostly) garbage collects for you, when you use them properly. I really like the fact that my objects clean up their entire child structure as soon as they go out of scope - without a bunch of delete code required.

      But, yeah, a testing team with valgrind will usually find a bunch of (trivial) "leaks" in my code, too - I'm talking about single objects that are created once and not destroyed before exit - technically, I don't call those leaks, but valgrind does.

    119. Re:What's the point? by JoeMerchant · · Score: 2

      I suppose it depends on your target market. I've written mostly for medical and military, and they never had complaints about Qt's ui. Even did a server based app with no UI, and Qt still made sense as the library because of the cross-platform requirements - lots of shared memory and other stuff is "wrapped up" and platform details handled by the library. I guess I've always been in small enough companies that "outsourcing to the trolls" was the better option - we'd never have delivered anything cross-platform if we had to hire multiple teams for implementation on each.
         

    120. Re:What's the point? by Wdomburg · · Score: 1

      It also turns out you can implement everything in plain Java libraries. In fact it is a heck of a lot easier, since you don't need to wrap the C modules; everything Just Works.

    121. Re:What's the point? by Wdomburg · · Score: 1

      Java has a vast ecosystem, excellent threading and concurrency support, robust monitoring and debugging tools, and can rival (or exceed) the performance of traditional compiled languages.

      This is true for both small scale and large scale problems. For example, I wrote a little tool to do LDIF transforms in perl. Six hours later, it wasn't even half finished. Rewrote it using a Java library (UnboundSDK) and it finished in about twenty-five minutes.

      On the other end of spectrum, I wrote a load-testing application that scaled cleanly to tens of thousands of threads. In a couple of hours. With no experience writing anything to that scale before.

      (And the idea that Java is strictly Android these days is absurd. Your cable box runs Java. So does your blu-ray player. Along with ATMs, cash registers, voting machines, any number of enterprise applications, webservices, etc, etc. It is an incredibly pervasive language.)

    122. Re:What's the point? by TheRaven64 · · Score: 2

      Medical and military sounds like mostly Windows shops, with maybe a bit of Linux thrown in. Qt apps on OS X tend to be garbage - you can spot them within a few seconds of launch, because they look vaguely like OS X but don't behave at all like it (e.g. modal dialog boxes, incorrect shortcut keys for text field navigation, preferences that need buttons hitting to take effect, and so on).

      --
      I am TheRaven on Soylent News
    123. Re:What's the point? by TheRaven64 · · Score: 1

      You can not program 1B android devices in ANSI C.

      Yes you can and most of the most-downloaded apps in Google Play use a significant amount of C (often everything except a basic launcher).

      --
      I am TheRaven on Soylent News
    124. Re:What's the point? by Assmasher · · Score: 1

      I don't particularly care for Java primarily because it really is verbose, but the reason Java is so prevalent is that it is an excellent middleware language solution that made it possible in the late 90's and early aughts for companies that would never have managed to build these systems with C++ (just not enough C++ people who don't hang themselves and your company 5 times a day.)

      You could argue that if they couldn't do it with C++ they shouldn't have been doing it anyhow, but there'd be hundreds of thousands fewer jobs in the software industry as a result.

      --
      Loading...
    125. Re:What's the point? by JoeMerchant · · Score: 2

      You might be surprised, my first medical app on Qt was targeted to OS-X, for a whole year, but as Director of Software Development, I chose Qt to hedge my bets against the day that OS-X got thrown under the bus for "business reasons." And, yes, especially in 2006, the Qt App was still in Carbon, while Cocoa was what all the cool Objective C kids were doing that week - and our in-house OS-X champion threw a hissy fit about it. Nobody else cared - it was a good looking app, just not quite up to the minute with latest OS-X styles.

      So, two things happened by mid-2007. One, Qt updated to use Cocoa, and 95% of the OS-X champion's complaints about the app were solved for us by the trolls - zero code changes required by us. Two, the suits decided that we were merging our design efforts with a larger project that was Windows based, so OS-X did get thrown under the bus, as predicted. It took about 8 man hours to convert our Qt App from one that was written on OS-X, exclusively for OS-X, never tested on anything but OS-X, to running identically on Windows - and 7 of those man hours were wrapped up in converting OpenGL code....

      I'm in medical now, and the primary target is Linux - but lots of use cases call for operation under Windows too....

    126. Re:What's the point? by Assmasher · · Score: 1

      I can't use a statically typed language without being constantly pelted with reminders of their limitations. No, you can't compile that, you didn't use quite the right punctuation in the type name. Sorry, I couldn't protect you from that null pointer, even though I have decades of research and all the source code available to me. Oh, you want a type that could be one of several types? Have fun with those runtime downcasts, or null pointers, or whatever.

      Personally, it sounds like you want to be as sloppy as you like... Nobody should be protecting you from null pointers except yourself.

      --
      Loading...
    127. Re:What's the point? by Assmasher · · Score: 1

      One of the overlooked advantages with using Java on the server/middleware side is that long running processes in real production environments often have to deal with memory fragmentation, with C++ this is often a very serious, and sometime virtually impossible situation to deal with (writing a pre-allocating memory manager is a non trivial task and you have to worry about people misusingit.) In Java (which I don't personally enjoy working in, but can appreciate), this issue is, for the most part, gone - and in those rare cases where you have to directly intervene, it is trivial to do so.

      Given the skill of the average "I work at a bank building IFX/OFX software" developer, I'd rather they stuck to Java...

      --
      Loading...
    128. Re:What's the point? by Assmasher · · Score: 1

      This.

      I've written services/daemons using Qt simply to make it easily extensible because the framework I built was multi-process with IPC and each process could be heavily multi-threaded.

      Qt abstracted away a lot of things that would have made the project difficult to build on many *nix platforms.

      --
      Loading...
    129. Re:What's the point? by Anonymous Coward · · Score: 0

      Yeah, this is how most 2+-sigma programmers on the right side of the standard distribution of programmers approach problems.

      The 3+-sigma programmers realize that a lot of enterprise applications are written in Java, and since it is impractical (both economically and politically) to move entire codebases to something "better" - say, Haskell or OCaml - there's plenty of money to be made writing Java (or Groovy, or Scala, or Clojure).

    130. Re:What's the point? by drolli · · Score: 1

      Program an App in ANSI C does not equal to programming a part of an app in ANSI C.

      "most of the most-downloaded apps" is so vague that it's a non-information. My viewpoint is not "why knowing C is cool" but "that is the shortes route to delivering software to many platforms". If i would be in the business of making a "most downloaded app" then probably i could easily spent a few man-years for platform specific optimizations.

    131. Re:What's the point? by TheRaven64 · · Score: 1

      Actually, C is used in these cases specifically because it is cross-platform, not for 'platform-specific optimisations'. The core of most of the popular apps on iOS and Android is the same, with a thin layer of platform-specific code, which is Java on Android or Objective-C on iOS. For games, the amount of Java code is typically tiny - create an OpenGL context and pass it to the native code, which is identical on both mobile platforms. This is a big part of the reason why there are so few apps for Windows Phone compared to the other platforms: by forcing WP apps to be entirely managed code, they make it hard to port apps.

      --
      I am TheRaven on Soylent News
    132. Re:What's the point? by Anonymous Coward · · Score: 0

      Well, there is a whole lot of Java in the enterprise and other organisations like banks.

      Obviously they are always last to move, because they have a lot of legacy applications anyway.

      Okay you seem minorly ignorant and the GP majorly so (and I don't mean it pejoratively, at least mostly not, if you're not in this world why would you know the specifics, but since you comment as if you do, I'll poke the teeniest bit of fun).

      1) Java hasn't been "slow" for ages, seriously, in most real world applications it's faster than hell (I swear JIT has been around for ages, do people really still not know what it does?), as illutsrated by my next point...

      2) Java doesn't just run your banking, it runs most of your favorite games (seriously, you like WOW or League of Legends? Yep, Java runs a huge portion of the server side, I'm cherry picking two of the biggest games around on purpose, but there are others).

      3) Ever wonder why Netflix's stuff is released in Java? Ever wonder why the Java APIs to AWS are the first class citizen? Yeah, there's reasons for all that, the cloud (whatever you may personally feel about it) is powered by a lot of Java.

      4) Dalvik is a separate VM, the only "Java" that Google used for Android was a subset of the language, it is a different platform in a very real sense. I know we can quibble about language vs. platform but part of what makes Java powerful and somewhat unique is "Java the platform".

    133. Re:What's the point? by Giant+Electronic+Bra · · Score: 1

      Well, yes, but did all the 100 different library vendors you rely on do that? One hopes that libraries are free of leaks but reality is they aren't, and they often use DIFFERENT frameworks for smart pointers etc than the one you happen to be using, which can create its own headaches. At best its an entire extra category of stuff that has to be mastered.

      I know a lot of people talk about all the 'random execution pauses' and such that a GC brings, but in my lengthy Java experience (10 years now) with high performing applications I've not found it to be a huge impediment. I think if you are really down to caring about sub-microsecond latancies and such then perhaps Java isn't the solution for that particular problem, or you need a hybrid solution or something (at which point you've probably lost a lot of the advantages of going with Java to start with, admittedly). There just really aren't that many such applications in the world. I run some pretty big market data processing applications and I don't see millisecond variances. Since most of the data being published is coming across at least leased lines from halfway around the world and often over the 'net sub-millisecond or even a couple milliseconds is not actually something anyone will care about. So the utter reliability and stability of the application (processing up into the 100's of thousands of packets per second with 100% reliability for weeks on end without human attention) is the paramount consideration. I have competitors that try to sell to my client base SPEED! They succeed for a while sometimes, but they always come back after the big ugly crash :)

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    134. Re: What's the point? by Anonymous Coward · · Score: 0

      Just to clarify, the way it ended:
        - Android doesn't use the Java sandbox and runs every app under its own JVM and its own Unix uid.
        - Chrome NaCl runs C programs under a (vaguely) Java-like sandbox based on instrumentation and a code-validator.

      I think this brings us closer to an answer to the question. What is it about working with C that lets you get a sandbox right, while someone who writes mostly Java code makes one mistake after another? Maybe this is just prejudice and necktie-logic, and there's something technically different about the two sandboxes that explains why one works and the other repeatedly fails.

    135. Re:What's the point? by Anonymous Coward · · Score: 0

      mostly-yes in that you can get the throughput of C++ while allowing Python-level programmers to maintain it, but "stable task completion time"? what about gc pauses?
      I would think you'd want to use C++ for this, mostly to avoid the garbage collector.

    136. Re:What's the point? by Anonymous Coward · · Score: 0

      sorry, Eclipse is a steaming mass, and everyone knows this while almost everyone uses it anyway. Stop lying just so you can keep arguing.

    137. Re:What's the point? by Giant+Electronic+Bra · · Score: 1

      Yeah, it takes a lot of work to maintain those, though I admit it was kind of fun writing them... lol.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    138. Re:What's the point? by Giant+Electronic+Bra · · Score: 2

      Its not the design. Like I've said I've done some pretty large perl programs. The work involved in dealing with the bugs that arise that just can't exist in Java generally overcomes the advantages of using perl, and by the time you stick rigidly to classes and modules in perl why not use Java? Frankly I avoided all the one-line amazing wonder-code in my maintainable perl anyway unless it was necessitated by performance reasons, so its not like there was a big difference. There isn't even really that much less type casting in perl vs Java, it is just somewhat obfuscated into the reference syntax.

      The one GOOD example of an application that I still maintain in perl is our build system. Its a pretty good sized set of perl modules a couple simple parsers, and some dependency graph tracking code. This is where perl IS great though, I can invoke specific command line utilities and muck around with files and such without a lot of hand-wavy abstractions. Maven used to suck up half our time working around its built-in limitations, Builder barely requires any attention at all at this point and if you need to do some weird thing you can write a new perl module in 5 minutes and do it, assuming the 40 existing ones don't do it already. However, even my most experienced Java guys quail at the thought of understanding the core Builder code, lol.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    139. Re:What's the point? by Giant+Electronic+Bra · · Score: 1

      LOL, right. I guess it would hate any C++ code I wrote! It never ceases to amaze me that QT and its tools haven't totally dominated the desktop application market. Why WOULD you use anything else? I mean its been portable to all desktop OSes for years, and even if you need a license it is dirt cheap. GTK in its various flavors is OK, but far behind QT and you can run on windows, macs, and I guess now Android and iOS too? Seems like a no-brainer to me. I think developers just hate conformity...

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    140. Re:What's the point? by prionic6 · · Score: 1

      OSX comes (used to come?) with outdated versions where a lot of Java programs don't run properly

      Who cares what version is installed by default? OSX can be upgraded to the latest version, and any application that needs it ought to provide an installation package that does precisely that, or at least clear instructions to the user on how to do it.

      As the person responsible for packing our commercial desktop Java app and maintaining its installer, I suggest just bundling the JVM with your product, but not as its own Installed package but inside your installation. It takes a bit of additional hard drive space if every app has its own JVM but it saves so much confusion and different version failures. The end user also doesn't have to worry about the abysmal Oracle updater because our JVM is not registered to handle browser applets or other stuff, so that security risk is just not there.

    141. Re:What's the point? by Giant+Electronic+Bra · · Score: 1

      Yeah, that's true. There are of course SOME pitfalls that Java won't help you with, like just allocating bazillions of short-lived objects, though in the last 4 or 5 years the GC has gotten so good that I've abandoned all the allocator tricks I used to use back in the 1.4/1.5 days. That and modern CPUs just have vast numbers of cycles to burn. Feeds that were barely possible to parse 5 years ago now take up 5% or less of the CPU. A lot of it is probably better caching and etc too, but nowadays the limits seem to be pretty much I/O. Even that is solved mostly if you want to throw multi-thousand-dollar NICs at your problem and spend weeks tuning.

      There certainly are plenty of hacks in all industries. I worked in Aerospace for a few years and most of the people there were really pretty mediocre. They usually had a very complete support system, so their job was pretty low level and they did fine. I mean we made 747's fly and not crash, and obviously we managed even with some coders that you really had to watch. I think its mostly the same in the banks, except the culture isn't quite so rigid, so now and then they have a big problem. I'm not sure Java helps much with that, but I guess it doesn't hurt...

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    142. Re:What's the point? by drolli · · Score: 1

      So which of the most used apps on android use openGL?

    143. Re:What's the point? by antsbull · · Score: 0

      Why do shops like Twitter, Ebay, Google use Java so heavily then? They run the highest volume websites in the world. Kind of blows your argument about using ASM or C out of the water. If Java was slow then they wouldn't have used it. Java is slow, if you don't have a clue what you're doing. I assume thats why you think its slow.

    144. Re:What's the point? by Actually,+I+do+RTFA · · Score: 1

      You can also cast things around until the compiler and IDE buy it and wait for the SEGV.

      You can do a lot of things. But having a code that says "danger, this code requires a lot of care to touch." is a good thing. Casting things through a void* or something like that is an excellent example of how you can detect that when reviewing or working on code. Plus, that's the exception. So when I see a void*, I know that the documentation is really important.

      It's on the developer to know when they can and cannot get away with it.

      I don't understand why. Fundamentally, it seems superior to have a computer check for bugs for you. That's what static code analysis is all about.

      If you don't KNOW if class A and Bs X methods are actually compatible, what in the hell are you doing passing them around? You're supposed to know that.

      Because I'm human, and made a mistake? Because when I wrote the code they were compatible, but then someone changed the definitions of one of the classes without knowing it would break my assumed usage because they weren't aware of everywhere that the code would be used in the entire codebase. Because there are multiple developers on a project?

      This would be a lot less of an issue if multiple inheritance was better supported, but it's not.If it was, I could write the module explicitly around class A. Later, given a class B that should work fine with the module, I could derive Bprime inheriting from A and B and it would be fine.

      But it actually is pretty well supported, especially in this case. I mean, actual multiple inheritance is always a shitshow. But interfaces are totally well supported and easy to use. I don't understand what issues you think arise from using interfaces. But I can say that what you describe is pretty much what should happen. Although really you should write the module around Aprime, an interface, and then say that both A and B implement interface Aprime.

      --
      Your ad here. Ask me how!
    145. Re:What's the point? by Anonymous Coward · · Score: 0

      The point is it's got both the development efficiency of a memory-managed language, and the technical rigor of a strongly typed language which supports strong static analysis. Scripting languages are hell to keep clean once you scale the code base past a fairly small limit, because all the "tricks" that people find useful to make things faster also obscure what the program is actually doing.

    146. Re:What's the point? by DoofusOfDeath · · Score: 1

      You question the conscientiousness of the programmers in the first paragraph and assume it in the second.

      You should see the crazy type casting that happens in production code to please the IDE and/or compiler. It may or may not be the right thing.

      Then there's the cases where it is actually OK if not all objects passed in support all of the methods. Not Applicable might be the right outcome of a method call if the caller is prepared for that possibility.

      FWIW, I was never trying to argue that a language like Java is better than a language like Python in every circumstance.

      There are tradeoffs, and I'm just saying that for some systems, especially large complicated ones, I've found the benefits of static typing to outweigh the greater effort that's needed to make certain kinds of changes.

      As I'm sure we all know, a badly designed program in either kind of language can make the grass on the other side of the fence look greener.

    147. Re:What's the point? by sjames · · Score: 1

      As I'm sure we all know, a badly designed program in either kind of language can make the grass on the other side of the fence look greener.

      True enough. As they say, it is possible to write a Fortran program in any language.

    148. Re:What's the point? by sjames · · Score: 1

      So when I see a void*, I know that the documentation is really important.

      def pickymethod(self, pickyobject):

      """Here there be dragons, beware"""

      Although really you should write the module around Aprime, an interface, and then say that both A and B implement interface Aprime.

      Problem is, A and the module that handles it is existing code used in multiple projects. IO don't want to do a cut/paste job and I don't want to risk breaking the other projects. B is from another existing module used by other projects. I REALLY just want to derive a Bprime that can serve as an A or a B as needed by the legacy modules.

      Python does a decent job with multiple inheritance, but even so, it can get ugly so I might prefer duck typing and a compatible class.

    149. Re:What's the point? by Xest · · Score: 1

      People do use it outside of Windows, it's become the defacto primary language for indie game developers nowadays developing on engines like Unity, or game development frameworks like MonoGame. Both of which support iOS, Android, Linux, MacOS X, and of course Windows.

      As a Windows developer I never saw Mono as a viable option for development on Linux/MacOS X so I always reverted back to C/C++ or Java, but when I started fiddling with MonoGame and used it on Linux I was actually incredibly pleasantly surprised as to how good it is - it's good to the point of being a perfectly viable option, which is not something I expected.

    150. Re:What's the point? by Xest · · Score: 1

      What efficient methodology is there to write a large codebase using a scripting language that can't be used with a compiled language exactly? The "you need better developers" fallacy is exactly that, a fallacy - it doesn't matter how good your developers are, all developers introduce bugs, certainly the number decreases as you increase the skill of developers but there is not a developer on this earth that does not introduce bugs.

      So there lies the problem with scripting languages, because many scripting languages don't have any kind of toolchain that prevents bugs from creeping all the way through until runtime, you have entire classes of bugs that a compiler would catch creeping through to your executing application at runtime, as the codebase grows scripted applications therefore by and large almost entirely all become much more time consuming to debug, as bugs only appear in fringe cases and it is not immediately obvious how to reproduce them. Often you find yourself having to implement tremendous logging infrastructure and so on and so forth to have confidence that your application is solid and the net result is that it's just way more efficient to develop large projects with a compiled technology. Also, whilst it's not a fault of scripting languages per-se, you tend to find that compiled languages have far superior toolchains for developing large projects in the first place anyway.

      I don't say this as someone spouting opinion and theory, I say this as someone who has had experience as both a lead developer and technical architect in implementing large projects in both compiled (native and managed) and translated languages (which is usually what people mean when they say scripting, though it's getting muddier with more use of just in time compilation etc.), and even some projects mixing it all together.

      For anything large the amount of time spent debugging scripted applications just gets too large for it to be worth it, at that point you might as well have used compiled because any early benefits of getting up and running quickly have long been lost.

      Which isn't to say I'm of the opinion that scripting languages are always useless, not at all, I think they're fine for small non-mission critical tasks such as task automation, and for prototyping, but I think the larger a project gets, the less worthwhile scripting languages become - that's not to say you can't use them, as I say, I have myself been involved in such projects, but the project is always much more costly. This is evident at companies like Facebook with their use of PHP - last time they released server specs they had equivalent of 8gb of RAM per user of Facebook which is insane, even if a lot of that is being put into big data type processing and analytics, and the amount they've spent trying to turn PHP into something compiled similarly paints the same picture. So yeah, sure, Facebook is there, and it works, most of the time, but it's also costing them way more to run than it should if it was a properly planned project using something like Java, C++, or even C# from the outset. The flip side is, someone like Zuckerberg who was just hacking a de-facto prototype together may also never have been bothered, (or potentially even competent enough?) to do so with a compiled language and a more professional architecture, so it's a double edged sword in that respect, and I can see why many startups like to just get something developed no matter how crappy using the quick to launch (but poor to maintain) benefits of scripting languages.

      The Google approach (well, it's probably unfair to call it the Google approach, other big players were doing it long before them) of writing the mission critical or speed critical stuff in Java or C++ respectively and using something like small manageable chunks of a scripting language like Python to string it together is not a bad option.

    151. Re:What's the point? by julesh · · Score: 1

      You question the conscientiousness of the programmers in the first paragraph and assume it in the second.

      Yes. Most developers I've worked with pay an awful lot more attention to the code than to the documentation. It may not be desirable, but it's what happens in almost all cases. I know I'm guilty of it at times, even though I try not to be. If I see a problem with the code, I'll refactor it. Problems with documentation, (1) I'm less likely to notice them and (2) I'm less likely to actually fix them if I do notice them.

    152. Re:What's the point? by rdnetto · · Score: 1

      I like C# a lot. I wish people used it outside of Windows. Alas. I'll retire happy if I never touch Windows again, so C# is dead to me.

      I'll second this. C# is a beautiful language with a terrible execution. Java is a terrible language with a much better execution (at least it has closures now...).

      Having found myself in the same situation, you might want to take a look at D. It has very similar syntax to C#, but works just as well under Linux as Windows.

      --
      Most human behaviour can be explained in terms of identity.
    153. Re:What's the point? by bingoUV · · Score: 1

      Problem is, A and the module that handles it is existing code used in multiple projects

      A mistake has been committed - any important "data types" being passed around across large/many areas should have been interfaces, not classes. On large systems, bridge pattern is typically indispensable. A decent, not even genius, developer used to static type languages would not have committed this mistake.

      --
      Bingo Dictionary - Pragmatist, n. A myopic idealist.
    154. Re:What's the point? by sjames · · Score: 1

      And yet, I see it happen. Nice to have a good clean recovery.

    155. Re:What's the point? by david_thornley · · Score: 1

      Your C++ is a bit old.

      std::string is a string class*. It's not really well designed, but it's a string class and works just fine. C++11 added threads. Exceptions have been in the language since the first standard

      What C++ lacks is ease of parsing, and that leads to the tool issues. That's left over from C.

      *Okay, a template class, so std::string is more like std::basic_string. It works.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    156. Re:What's the point? by Actually,+I+do+RTFA · · Score: 1

      Python does a decent job with multiple inheritance,

      Eh, so does C++.

      The only time C++ really has trouble is if A and B share the names of methods/variables. And the reason they will have trouble is that there is no solvable way to not have trouble. Not for a computer. Not for a programmer.

      Although, I don't see how you can possibly go wrong, if you can write to the module that contains A creating an interface A implements, and changing the code that the module uses to use said interface.. There's no difference for backwards compatibility. (Unless you don't believe in namespaces, and have to worry about truely unique names everywhere.)

      """Here there be dragons, beware"""

      See, that's not something that is easy to search for in code reviews. Because, there is no validation that I did not write: *** Off the edge of the world: Sea Serpents Around ***

      And if you cannot trust other programmers to use fucking interfaces, you cannot trust them to use the right magic strings.

      --
      Your ad here. Ask me how!
    157. Re:What's the point? by WuphonsReach · · Score: 1

      And a lot of Java "boilerplate" can be handled better by things like GRAILS, Spring Roo, and/or AspectJ - things like automating getters/settings becomes trivial with AspectJ. They don't clutter up your .java source file.

      --
      Wolde you bothe eate your cake, and have your cake?
    158. Re:What's the point? by bingoUV · · Score: 1

      That is correct. So it boils down to bad designs in either system leading to people thinking that system itself is bad. Something like the other guy in this thread was saying.

      --
      Bingo Dictionary - Pragmatist, n. A myopic idealist.
    159. Re:What's the point? by sjames · · Score: 1

      Or it means the system has grown and evolved over time in ways not anticipated when it began. That is the nature of software. In fact, some of the most useful bits of software are that way (of course, so are some of the most useless).

    160. Re:What's the point? by sjames · · Score: 1

      The thread is about Java being/not being an appropriate mid-point between Pyt hon-like interpreted languages and C++ like compiled languages.

      See, that's not something that is easy to search for in code reviews. Because, there is no validation that I did not write: *** Off the edge of the world: Sea Serpents Around ***

      Someone thinking of calling the function should certainly see it.

      Ideally, it would then lay out the necessary attributes of the object if it's non-obvious.

    161. Re:What's the point? by sjames · · Score: 1

      Sometimes the casting is actually the right thing though. An unfortunate side effect is that the IDE can't hold your hand anymore, you have to actually understand the code.

    162. Re:What's the point? by bingoUV · · Score: 1

      Not really, there is no excuse for not following bridge pattern and getting bitten. At soon as 2 people use a "data type", it is not too soon to separate out interfaces. If good design were difficult, I would agree with you that anticipation of evolution is necessary for making the extra effort. But this is trivially easy to do.

      Only developers not used to the static-ness of the language they are developing in can miss it. And developers not used to "dynamic" , in this sense, languages can cause shudder-worthy events, so this just boils down to bad design.

      --
      Bingo Dictionary - Pragmatist, n. A myopic idealist.
    163. Re:What's the point? by Actually,+I+do+RTFA · · Score: 1

      The thread is about Java being/not being an appropriate mid-point between Pyt hon-like interpreted languages and C++ like compiled languages.

      Well, first, C++, Java and Python all have multiple inheritance. Java just only does it with interfaces. Which you objected to by stating no one did multiple inheritance except Python.

      But at a higher level, this sub-thread seems to be about your assertions that duck-typed and interpreted languages are superior to compiled languages.

      Someone thinking of calling the function should certainly see it.

      Really? Cause I can think of a lot of reasons that's not the case. Just in like 2 minutes:

      1. It got autopopulated in my IDE, and *sounds like* the function I intend to use. Possibly even one I've used before and am mis-remembering the name of.
      2. The "Here be Dragons" got added later, when the signature of the function didn't change (or it did, but duck-typing, so no-errors, let's go!)
      3. I was told about the function verbally, so I never read the docs. I then told someone else. At some point, the oral tradition drops the "Here be Dragons".
      4. In a less formal code review (maybe someone in charge of many programmers, who cannot do a full read of all of their code) there is no way to easily have them find it all using grep.

      Your solution is really fragile. It requires never changing classes once they are created (at least the public members thereof) because you never know if they are used. Which, in some languages, or with some programmers, is all the members.

      Further, the only situation you seem to be able to suggest where it is useful is when you have, I'm assuming read-only, access to two modules, and need to create some code that hacks both of them together. And at least one module declines to use the proper method of defining interfaces and using those.

      To get that feature, you're willing to jettison a ton of compile time checking, make the codebase fragile and hard to change.

      Honest questions: Have you ever worked on a large codebase? Multiple developer? Multi-year? Cause what you write makes me assume that you, in fact, do not. That your big issues are hacking together two JQuery modules, and you make websites where you're the sole coder.

      --
      Your ad here. Ask me how!
    164. Re:What's the point? by sjames · · Score: 1

      It got autopopulated in my IDE, and *sounds like* the function I intend to use. Possibly even one I've used before and am mis-remembering the name of. The "Here be Dragons" got added later, when the signature of the function didn't change (or it did, but duck-typing, so no-errors, let's go!) I was told about the function verbally, so I never read the docs. I then told someone else. At some point, the oral tradition drops the "Here be Dragons". In a less formal code review (maybe someone in charge of many programmers, who cannot do a full read of all of their code) there is no way to easily have them find it all using grep.

      If any of that happens, you absolutely positively deserve everything you get. DO NOT call a function if you don't know what it is!

      My actual assertion, BTW is that duck typing has advantages to go with the disavantages.

      I have worked on a number of large projects with multiple coders. I presume you use the old cut'n'past code 'sharing' method with a significant appearance of the cargo cult antipattern?

      Your solution is really fragile. It requires never changing classes once they are created (at least the public members thereof) because you never know if they are used. Which, in some languages, or with some programmers, is all the members.

      You need to RTFC as well. Surely you don't recommend unilaterally changing code used in other projects!

    165. Re:What's the point? by Actually,+I+do+RTFA · · Score: 1

      I presume you use the old cut'n'past code 'sharing' method with a significant appearance of the cargo cult antipattern?

      Clearly the only reason you would say something like that is a particularly stupid ad homenim. I'm talking about using interfaces and code review. I'm talking about best design practices. Clearly, since I'm advocating for using interfaces, I'm not copy-and-pasting code. But advocating for what you are advocating for is actually really compatible with cut-and-pasted-code.

      But that level of intentional misunderstanding may bleed into my responses below.

      If any of that happens, you absolutely positively deserve everything you get. DO NOT call a function if you don't know what it is!

      At this point, I wonder how your "everything in comments" system architecture works, since you seem to have issues reading. I mean, nothing I wrote says "call functions randomly".

      I talked about an obvious human error (incorrect memory of a name); I talked about being given information from a collegue; I talked about coordination issues where function signatures changed; and I talked about how hard it made code reviews.

      The fact that you don't seem to recognize these possible issue makes me question your experience. Because these are all things that happen.

      Surely you don't recommend unilaterally changing code used in other projects!

      I'm not going to make an argument here, because this is obviously going to lead to a conversation derailing where you don't address my valid points above.

      --
      Your ad here. Ask me how!
    166. Re:What's the point? by sjames · · Score: 1

      At this point, I wonder how your "everything in comments" system architecture works, since you seem to have issues reading. I mean, nothing I wrote says "call functions randomly".

      No, you just called whatever the IDE autopopulated with, apparently without bothering to check what it was. Or at least that's what you said may happen.

      You also talked about calling functions based on oral lore that has changed over time. That sounds pretty cargo-cultish to me especially since you apparently believe that might be a fair reason to have never looked at the doc string.

    167. Re:What's the point? by Actually,+I+do+RTFA · · Score: 1

      you just called whatever the IDE autopopulated with, apparently without bothering to check what it was. Or at least that's what you said may happen.

      Right, because you thought that the function was a different one because you misremembered the name. Or because you would assume a function like "getCurrentHealth()" would return the health of a character, and not, I don't know, concatenate two Strings randomly. Especially if that's what similar, or identically named, functions do throughout a library.

      But, yeah, it may happen.

      And oral lore is really "consulting with collegues" Which totally happens in real situations. If I ask someone, for example, how to get an arctan value outside the -pi/2 to pi/2 range, them explaining quickly how to use atan2f is more valuable than telling me a function name and "GTFO;RTFM".

      Bottom line, I'm advocating for computers doing the work instead of comments (which may be unread, or out of date, or literally written after the code that referred to them). I posit many, many, reasons why having a computer check for errors instead of a human being. Your only response is that "Dude, but then I cannot hack two systems together using magic glue that happens to work, and enforces on everyone a requirement of never even optimizing their code, because any change could break my system. And could be avoided if I followed best practices."

      When every advantage you suggest can be done in a superior way without using duck typing, I'm blown away. You have argued that perfect programmers don't need the fuckin' IDE, they can check their own work. Well, perfect programmers don't need the fuckin' comments either, they can read the entire code and know what happens.

      I can only assume you're trolling, because while I've heard people defend duck-typing before, I've never heard such a malformed argument.

      --
      Your ad here. Ask me how!
    168. Re:What's the point? by sjames · · Score: 1

      I could as easily pick apart your arguments. I find it hard to imagine never using code that is shared with other projects for example. Why re-invent the wheel? Are you declaring code re-use dead? What about the system libraries? Do you hack those without notice too?

      And what happened to unit testing where you should easily enough shake out cases where people called a function they shouldn't have?

      I have argued that the programmer who just takes the IDE's word for it will eventually end up in deep trouble.

      You seem to be arguing that duck typing is bad because shoddy practices rule.

    169. Re:What's the point? by Actually,+I+do+RTFA · · Score: 1

      I could as easily pick apart your arguments. I find it hard to imagine never using code that is shared with other projects for example. Why re-invent the wheel? Are you declaring code re-use dead? What about the system libraries? Do you hack those without notice too?

      You could move the goalposts like that. I explicitly didn't respond because that is trying to derail the conversation.

      But what the hell. You've stopped actually responding to the points I make.

      So, I would contend that code reuse is helped, not hampered, by compiler-verified interfaces. I would contend that your "code reuse" is so stifling that it is literally inferior to copy-and-pasting... at least with copy-and-pasted code you can improve the module you copied without worrying that it breaks things.

      And what happened to unit testing where you should easily enough shake out cases where people called a function they shouldn't have?

      Why do you want to re-invent the wheel. Now, unit testing is good, but using unit testing to re implement (imperfectly) interfaces is, well, crazy.

      I have argued that the programmer who just takes the IDE's word for it will eventually end up in deep trouble.

      No, you've argued that programmers are perfect, that the comments will always be accurate, functions you call will never change, and the comments always need to be read for every getter and setter. And that's just to reject my examples.

      And I categorically reject any of the above.

      You seem to be arguing that duck typing is bad because shoddy practices rule.

      Since the only example you have been able to give as to why duck-typing has any benefit, is as a patch to shoddy use of interfaces, this seems a remarkably dumb statement. I contend that duck-typing hurts the ability of the computer to detect errors, and your only response is that some people didn't properly use interfaces in legacy code. Not that interfaces are somehow a bad way to program. But a shoddy programmer may not have used them.

      Well, fuck that. A paradigm that gives up useful features to paper-over shitty work, or allows code reuse between kinda existent modules via unspecified hack code that works 95% of the time is bad. Heck, any code that would need to be papered over like you suggest probably shouldn't be trusted. Duck typing is bad, it encourages bad practices and bad coding, and allows bad programmers to continue programming with silent errors as opposed to either fixing their shit or quitting their job and flipping burgers.

      --
      Your ad here. Ask me how!
    170. Re:What's the point? by Aighearach · · Score: 1

      No, Dilbert is an engineer who is good at math but too socially retarded to get a real job for a company that respects him. It is presumed that he was rejected by all the companies that are desirable to work for, and feels trapped.

      He is the Sub-Genius.

    171. Re:What's the point? by Aighearach · · Score: 1

      The "you need better developers" fallacy is exactly that, a fallacy - it doesn't matter how good your developers are

      It is widely understood to be true that Java has, as an actual, real-life thing in its "pros" column (and in its "cons" column) that it is easier to use by low quality, replaceable programmers. That is not an original claim, or something that is disputed by mainstream sources. That is true both for people who support Java, and those who are against it.

      Here is a video interview with Larry Wall, one of the most respected (and qualified in linguistics) language designers, who says, "because it is sort-of considered an `industrial language,' and programmers are sort-of interchangeable parts, managers like it for that reason..."

      https://www.youtube.com/watch?...

    172. Re:What's the point? by Xest · · Score: 1

      "It is widely understood to be true that Java has, as an actual, real-life thing in its "pros" column (and in its "cons" column) that it is easier to use by low quality, replaceable programmers."

      More so than systems languages like C/C++? Sure, more so than other mainstream languages used for business development like C#, PHP, Python? Absolutely not, so I don't really know what your point is. If anything I'd argue that Java developers are, on average, better than developers of scripting languages, because there's a higher barrier of entry. Java developers at least have to have a basic grasp of object oriented structure, and to be able to write something compilable before they can even get their application to execute - PHP programmers can have anything execute no matter how tragically badly structure or written it is. This is why big companies like Java - it enforces a baseline of quality so that even the worst programmers have to adhere to some baseline, that's barely true with scripted languages at all. Those interchangeable parts Wall is referring to are interchangeable without a reduction in quality to the level you will see with a change towards scripted languages where much more problematic code can reach a point of execution.

      None of which of course addresses the point I've made and the question I posed that you've conveniently dodged - what methodology exists to allow scripting languages with no compile time checks to be inherently better quality than compiled languages that force entire classes of bugs to be dealt with before execution that can make it through to execution in scripted languages? I'm intrigued to know what this methodology is because I've never heard of it despite years of working with both large compiled and scripted projects.

      Fact is, as a project gets larger, you cannot build something with a scripted language in the same time frame and for the same cost to a better quality level than with a compiled language like Java, or C# - the inherent disadvantages of scripted languages over managed languages make this a certainty. The performance disadvantage of translated languages over JIT compiled languages alone makes sure of this, the inherent quality difference and resultant increase in maintainability costs in large code bases just adds further weight to guarantee it.

  5. Language or Plugin? by Anonymous Coward · · Score: 0

    I'm not enough of a programmer to level judgements on the language, but I'm enough of an IT professional to tell you that the JRE plugin is terrible, and has been for a very long time. Most people don't know the difference, but the plugin gives the language a bad name, which probably makes the whole thing 'uncool'.

  6. Not meant to be cool by Anonymous Coward · · Score: 1

    Java (and C#) arent meant to be cool, they're meant to get the "menial" work done
    Software engineers can use their choice of language: from Assembly to Ruby\Python and other languages to accomplish what they want
    Java and C# are meant for us programmers to accomplish the "boring" tasks, writing business specific code,etc... Club Java with SAP rather than other programming languages IMO

  7. I don't care about Java by Rinisari · · Score: 3, Interesting

    Java is moving into archaic irrelevance faster than ever. That is, the language itself.

    The JVM, however, is now more useful and relevant than it ever was. It used to be naught but an implementation detail. Now, rather, it's central to an entire ecosystem of languages that will inevitably send Java the way of C: used only when the greatest speed is necessary.

    Scala is basically a next-generation Java. Java with functional programming, or really, vice versa. JRuby make Ruby actually scalable, given the presence of native threads and interoperability with existing enterprise libraries that commonly only ship in the form of Java or C# libraries. Clojure enables LISPers of yore and Schemers of new import explore functional programming as it used to be, without having to drop the wealth of Java libraries available. Ceylon, Groovy, Jython, and dozen of others are paving a way to give the JVM much more to do after Java becomes obsolete.

    Java will never die - it'll just become like COBOL, Fortran, and C before it: used in enterprise software, operating systems, and outdated educational assessments.

    1. Re:I don't care about Java by buddyglass · · Score: 3, Insightful

      Java is moving into archaic irrelevance faster than ever.

      This seems like it should be quantifiable. That is, you seem to be saying that the rate of decrease in Java's popularity is at an all time high. The slope of its decline is steeper than its ever been, so to speak. Do the popularity metrics bear out that claim? After some cursory googling, the TIOBE rankings are the only one I could find online that has historical data. If you look at their chart it looks like Java's rate of decline in market share is approximately linear, with a fair amount of fluctuation. If you focus only on the period from April 2014 to August 2014 then the decline is indeed rather steep, but it's no steeper than, say, the period from February 2013 to July 2013. So while Java may indeed be waning (gradually) I'm calling B.S. on the claim that it's "moving into archaic irrelevance faster than ever".

    2. Re:I don't care about Java by qbast · · Score: 1

      It is interesting how badly C# has been doing in TIOBE recently. It had been rising to become 'new java' until 2012, but then it went into decline steep enough to leave it behind BASIC.

    3. Re:I don't care about Java by buddyglass · · Score: 1

      Possibly related to Microsoft's failure to gain a foothold in the mobile / app space? Since we're talking about "market share", if a new market materializes and C# isn't used at all in that market then its relative share should appear to decline.

    4. Re:I don't care about Java by buddyglass · · Score: 5, Informative

      Also worth noting is that the downward trend in Java's market share is mirrored by downward trends in the share of other "highly popular" languages. This possibly indicates the market is becoming more diverse. TIOBE's chart goes back to June 2001, which, according to their numbers, is the high water mark for Java at 26.5%. In that month the shares for C and C++ were 20.2% and 14.2% respectively. In August 2014 Java had declined to 15.0%. C and C++ declined to 16.4% and 4.7% respectively. Woe is C++. In fact, of the top ten languages in 2014 the only ones to gain market share over the past year are Javascript and Objective-C. Javascript has been more or less flat; Objective-C spiked earlier this year but has since dropped back to 2013 levels.

      Python? Peaked in February 2011 when it reached 7.0% in TIOBE's index. It's currently sitting at 3.1% in August 2014.

      Ruby? Peaked at 4.0% in December 2008. Currently at 1.2% in August 2014.

      I can't get info on Scala, Go, Haskell, Scheme, Erlang, Groovy, et. al. because they aren't used widely enough for TIOBE to even report stats.

    5. Re:I don't care about Java by Anonymous Coward · · Score: 0

      And... Real time systems, financial, mission critical, and other important systems.

      Basically what people will pay money for vs hyped up new languages from academia.

      C++ had gone through the irrelevance phase, basically java is now going through it.

    6. Re:I don't care about Java by sproketboy · · Score: 1

      Scala is a disaster and probably will need a rewrite for it to be usable outside the hipster crowd.

  8. Backend of many sites by WilliamJozef · · Score: 1

    Many websites run on Java based systems (tomcat, JBOSS, WebSphere, etc.). I'd really miss it there. Also, many mobile apps are Java based (android). But where I really would not mis it: in my browser or on my desktop.... or at least, after Burp Proxy becomes be available in some other platform-independant language....

  9. Nope by Anonymous Coward · · Score: 0

    It's still shit and always will be. Please kill it! damn zombie...

  10. Are the pessimists right? by Anonymous Coward · · Score: 0

    Yes! Yes! Yes!

    It's kludgy crap piled up on more kludgy crap. And Oracle owns it. That right there should have led to complete abandonment. This is just like politics. We keep on reusing, reelecting crap.

  11. Not hip? by Anonymous Coward · · Score: 0

    It's trying to be.

    1. Re:Not hip? by lucm · · Score: 1

      Thank you for ruining my day. I don't know what JavaZone is but I now hate it.

      --
      lucm, indeed.
  12. Language VS The Virtual Machine VS Client by Kagato · · Score: 4, Interesting

    There almost needs to be two separate considerations. From a language standpoint Java is a bit middle of the road. It has some well known pain factors, but more or less it's one of the easier OO languages to master. It's used in a lot of high profile web site.

    The VM on the other hand does a lot of interesting things under the covers that make the language quite fast. When JRuby hit the scene it was faster than the core ruby project at quite a few things because the VM was doing all sorts of optimizations behind the scenes. Also, because the Java OP code is so stable with relatively few changes per major release you have a bit of a boom in languages you can run inside the Java VM. You get all the benefits of the R&D Sun and Oracle put into JIT, while retaining the ability to do interesting and contemporary things with your language.

    Clojure, Groovy, Scala, Python being the primary languages with another 16 that can compile to Java Op code.

    Were Java fails mostly is as a client application, running with some sort of Windows GUI. Sure, you can do it, but it realistically people who do Java Swing apps are writing some sort of thick client that could almost always could run inside a contemporary browser without any plugins.

    1. Re:Language VS The Virtual Machine VS Client by StormReaver · · Score: 3, Interesting

      Sure, you can do it, but it realistically people who do Java Swing apps are writing some sort of thick client that could almost always could run inside a contemporary browser without any plugins.

      Swing is where I do all of my Java GUI programming, and I find it to be an excellent fit for that purpose (and so do my customers). I find running Java inside a browser to be, to put it politely, fucking retarded.

    2. Re:Language VS The Virtual Machine VS Client by Adam+Jorgensen · · Score: 1

      Great summary.

      For me, Java the language is disgusting whereas the JVM is wonderful.

    3. Re:Language VS The Virtual Machine VS Client by Kagato · · Score: 1

      To clarify, when I say run I'm talking about as HTML/CSS/JS, not using the Java web plugin.

    4. Re:Language VS The Virtual Machine VS Client by prionic6 · · Score: 1

      I find running Java inside a browser to be, to put it politely, fucking retarded.

      You're talking about applets, he's talking about having an application server serve HTML. I suppose.

  13. Java is the new COBOL by techfilz · · Score: 1

    Its been around for ages (in IT terms) and has caused more heartburn to developers than bad doughnuts. Used a lot in the monstrous systems that run the Corporates but not so much for developers looking to have a bit of coding fun. Java is as cool as Vanilla Ice was back in the early nineties.

  14. From a users perspetive by Anonymous Coward · · Score: 0

    java is intolerable, i don't care what you developers say about it, its technical merits and failings asside, its annoying, daily updates. very app/applet followed by a half dozen nag screens because of all the security failings in it.

    Then you get to enjoy the unbearably slow performance, and HP-UX style UI from 1992.

    1. Re:From a users perspetive by maliqua · · Score: 1

      Then you get to enjoy the unbearably slow performance, and HP-UX style UI from 1992.

      Ahh good ol' CDE i never drew the comparison but that's bang on lol, i wonder if java's ui elements were modeled after CDE

    2. Re:From a users perspetive by Georules · · Score: 1

      You use Java in a lot more things than you think. Java Desktop Apps are terrible and the updater is annoying as hell, but it's also likely the language powering most every device you use and many web applications you use day to day.

    3. Re:From a users perspetive by lucm · · Score: 1

      I prefer java desktop apps to adobe air apps.

      Talk about horrible stuff and annoying updater...

      --
      lucm, indeed.
    4. Re:From a users perspetive by maliqua · · Score: 1

      As i look around *my* room, i see embedded linux devices that are running mostly binaries primarily written in C, many smaller electronics with simple micro controllers, even a windows CE embedded device running software written in .NET and one java based device my phone..

      If i think about whats in my car, its a windows CE embedded device running native applications.

      java does a lot of enterprise, android and a decent % of webapps. other than android apps rarely do i see something that is java that behaves as well as the non java equivalents

    5. Re:From a users perspetive by Anonymous Coward · · Score: 0

      it's not really fair to compare things to adobe, its like comparing smells to poo, poo is 99% of the time worse

    6. Re: From a users perspetive by Redbehrend · · Score: 1

      You forgot the updater tried to install toolbars every 2 weeks to the common user...

    7. Re: From a users perspetive by Anonymous Coward · · Score: 0

      That's like saying you prefer waterboarding to being set on fire.

    8. Re:From a users perspetive by gbjbaanb · · Score: 1

      oh shit. that means all those devices are stuffed full of unpatched vulnerabilities.

      I think you're believing the Oracle hype they sell you in the installer. Most devices are written in C.

    9. Re:From a users perspetive by Anonymous Coward · · Score: 0

      Have you ever used a Blu-ray player? Or an Android device?

    10. Re:From a users perspetive by julesh · · Score: 1

      Then you get to enjoy the unbearably slow performance, and HP-UX style UI from 1992.

      Ahh good ol' CDE i never drew the comparison but that's bang on lol, i wonder if java's ui elements were modeled after CDE

      When running on X11, Java's default UI is based on the motif toolkit, which is the same toolkit that CDE was based on, so the answer to your question is "indirectly".

    11. Re:From a users perspetive by julesh · · Score: 1

      As i look around *my* room, i see embedded linux devices that are running mostly binaries primarily written in C, many smaller electronics with simple micro controllers, even a windows CE embedded device running software written in .NET and one java based device my phone..

      If i think about whats in my car, its a windows CE embedded device running native applications.

      java does a lot of enterprise, android and a decent % of webapps. other than android apps rarely do i see something that is java that behaves as well as the non java equivalents

      Do you have a BluRay player? A DVB-based set-top box or a TV with integrated DVB decoder? Either of these would typically include a JVM.

    12. Re:From a users perspetive by Anonymous Coward · · Score: 0

      Then you get to enjoy the unbearably slow performance, and HP-UX style UI from 1992.

      Ahh good ol' CDE i never drew the comparison but that's bang on lol, i wonder if java's ui elements were modeled after CDE

      Absolutely, but probably unconsciously. Java was developed by Sun; Sun's brand of workstation Unix was Solaris, and Solaris at the time used CDE as its default WM.

    13. Re:From a users perspetive by Anonymous Coward · · Score: 0

      No, as you look around *your* room you see linux devices where you haven't the faintest clue of what they are running....namely because they are embedded devices where you more or less have no way of knowing what they are running exactly nor what those programs have been written in.

  15. All that packaging by Animats · · Score: 1

    The strange thing about Java is that it still uses a virtual machine. There's so much "packaging" associated with Java that compiling to machine code and linking would almost be simpler.

    1. Re:All that packaging by Animats · · Score: 1

      Need your software to work on a wide variety of platforms and run mostly the same on all of them

      Except nobody actually does that. The whole JVM thing was done to make browser "applets" work. Nobody uses those any more. Most Java is server-side, running on farms of x86 machines.

    2. Re:All that packaging by Anonymous Coward · · Score: 0

      Not all servers are x86. Itanium, SPARC and Power are still around. We run our java stack on SPARC Solaris, various Linuxes and windows server 2003 (don't ask) without having even spent a single second caring about cross compatibility. It all works out of the box and that's pretty cool I'd say

    3. Re:All that packaging by Anonymous Coward · · Score: 0

      Are you kidding? There are mountains of java libraries that provide things like build tools, pdf creation tools, data abstraction -- and on and on -- that are written in Java with absolutely no knowledge of where they are going to run.

    4. Re:All that packaging by Anonymous Coward · · Score: 0

      Yes -- people do that.

      And don't forget that many shops develop and dev-test their code on Windows and then deploy to Unix -- I worked for a company that used this model and I can't remember any incompatibilities caused by this.

      Huge appservers like IBM Websphere are written almost entirely in Java (save the execution scripts and other ancillaries) and are available on any platform that supports the JVM.

    5. Re:All that packaging by Anonymous Coward · · Score: 0

      The JVM was not made to make browser applets work -- it is the core of Java -- there is no Java without the JVM. The JVM was poorly implemented in the Browser.

    6. Re:All that packaging by NormalVisual · · Score: 1

      Except nobody actually does that. The whole JVM thing was done to make browser "applets" work. Nobody uses those any more. Most Java is server-side, running on farms of x86 machines.

      Those farms of x86 boxes aren't necessarily running the same OS on each, necessitating different JVMs. I've personally worked in server environments where the same code had to run on x86 machines under Windows, Linux, HP-UX, and Solaris simultaneously.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
    7. Re:All that packaging by peccary · · Score: 1

      I'm perplexed - with a low id# like 122034 I'd imagine you must be old enough to have been around when Java was still new. The JVM was developed in 1991, before Mosaic, and long before the notion of applets. The goal was portability across a wide range of hardware platforms. Had nothing to do with browsers.

  16. A stupid consideration by DoofusOfDeath · · Score: 5, Insightful

    What good engineer gives a f**k about what language "cool", aside from considering his/her ability to hire hipsters to staff the project?

    If you're worried about the "coolness" of a language when doing your day job, you're almost certainly doing your job poorly.

    1. Re:A stupid consideration by Kohath · · Score: 1

      Agreed. It's time for some people to grow up.

    2. Re:A stupid consideration by Anonymous Coward · · Score: 0

      Fucking hell, calm down. Look at the actual discussion; it's about real technical merits of the language. Someone is simply using widely understood idiomatic language as a way of bringing up the topic.

      Find a chisel and get your panties out your brown eye.

    3. Re:A stupid consideration by Sam36 · · Score: 1

      Also agreed. Seen plenty of startups go down because they want to use the latest when the latest doesn't solve anything.

    4. Re:A stupid consideration by afgam28 · · Score: 4, Insightful

      As mentioned in the summary this has been discussed a few times on Slashdot, and the original discussion was kicked off by Paul Graham's assertion that the cool hacker kids were into Python and the only people using Java were boring corporate types who had no passion for their jobs and were often mediocre programmers. In this sense, "coolness" does matter a little bit - if you're starting a new project, you don't want to choose a language where the labor pool that you're recruiting from is full of crappy programmers.

      And yes, I know good programmers can pick up new languages quickly. But it can take months or sometimes years to master all the libraries and frameworks around the language. Someone with relevant experience can hit the ground running and have a shorter ramp-up period than someone without. I'm not saying that this is more important than general coding ability - it's not - but this is valuable to a lot of smaller companies and startups who don't have lots of time to train up new hires.

      What makes Java uncool isn't so much the language itself, but rather the community around it. I actually like Java as a language better than Python, but there's a real culture of overengineering in the Java community, and people there really value convoluted architectures that are (ostensibly) maintainable and extensible. In the Python community, people value simplicity and hackability, and you can see it when you do things like file I/O or compare popular frameworks from both languages.

      Not directly related to Java, but a while ago the tech lead for OAuth 2.0 resigned citing cultural differences between the "web" and "enterprise" communities. The "cool" languages are definitely the ones that are favoured by the web community, and the uncool ones favoured by the enterprise community.

      So as much as people might think that it's just language syntax, it's not - it's also about communities, culture and different ways of thinking.

    5. Re:A stupid consideration by hey! · · Score: 2

      Exactly. If you want to regard yourself as an engineer, you have to start by accepting you are working to serve the interests of the client, not your career. I've seen so many problems occur because programmers want to have a certain technology on their resume. And the sad thing is that it works to get them through the HR filter. If HR is told to look for experience with a particular technology, it doesn't seem to matter whether the candidate's experience with that technology is failure.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    6. Re:A stupid consideration by Anonymous Coward · · Score: 0

      oh, ur such a doofus of death!

      There's nothing "hipster" about functional languages (like Scala) which scale well from serial -> parallel execution with little refactoring (unlike Java and other predominantly imperative languages) Get over yourself..

    7. Re:A stupid consideration by Anonymous Coward · · Score: 0

      Exactly. If you want to regard yourself as an engineer, you have to start by accepting you are working to serve the interests of the client, not your career. I've seen so many problems occur because programmers want to have a certain technology on their resume. And the sad thing is that it works to get them through the HR filter. If HR is told to look for experience with a particular technology, it doesn't seem to matter whether the candidate's experience with that technology is failure.

      Sure, the thing is, many other programmers do NOT want to have a certain technology on their resume or don't care either way, but that is all that HR hires.

      Don't blame programmers for HR's failures. Real companies that want real engineers should have a real HR department.

      Likewise, REAL engineers know when to leave and go elsewhere and can see when "serving the interests of the client" ais NOT about serving the interests of the client, but instead about buzzword bingo.

      You can't have it both ways. If HR has silly requirements, you want to blame the engineer for doing what it takes to get hired.

      You want to blame the engineer for following what the organization (through HR) claims is their interest.

      Either give the engineer some leeway in driving things or don't, but if the company takes the wheel and the engineer is told to sit down and shut up, you don't get to criticize the engineer for "not driving right" when in fact you told them not to even try.

      Can't have it both ways. I will grant you, an engineer who is not happy should leave calmly and politely and look elsewhere rather than waste
      their's and their client's time. It must be a two-way street though. If the client's time is being wasted, they should do the same.

      You seem to want it entirely one-way: the client is always right, the engineer is damned if they do and damned if they don't, just suck it up and take it.

    8. Re:A stupid consideration by pchasco · · Score: 1

      I also have to disagree with programmers who think learning a new language is just syntax, but for a different reason: Semantics. Sure, any programmer who knows a language could probably pick up the syntax of another language with relative ease. But knowing the semantics of a language is what separates the wheat from the chaff. Programmers who don't understand the semantics of the language are the ones who create the subtle, hard to find bugs. This is especially true with JavaScript: 2 == "2" (true), 2 === "2" (false), 2 + 2 == 4, 2 + "2" == "22", 1 (true), 0 (false), "1" (true), 0 == "0" (true), "0" (FALSE), "true" (true"), "false" (TRUE), [1, 2, 3] (true), [] (TRUE), I could go on. With the explosion of new web sites thousands of programmers began churning out crappy JavaScript because they thought," hey, I know (VB/C/Pascal/PowerBuilder/DreamWeaver/etc). Coding a website should be no problem!" Boom. Now this guy just wrote some crappy code which goes further to sully the name of JavaScript, which is not without its own warts but overall is a capable scripting language.

    9. Re:A stupid consideration by pchasco · · Score: 1

      Oops -- "0" (TRUE) is what I meant to write. "0" evaluates to true in boolean expressions in JavaScript.

    10. Re:A stupid consideration by Aaden42 · · Score: 1

      This is why I LOVE working for a place where coders interview coders. You can put whatever you want on your résumé to play buzzword bingo with HR, but a couple of übers with finely tuned bullshit detectors are going to lay down the gauntlet at your tech phone screen, and doubly so if you make it to a face to face.

      If you put a tech [that we care about] on your skills list, and you can’t wax poetic about its finer points in a room with two or three folks who eat, sleep, live, and breath whatever it is, your prospects are looking rather dim.

      We’re especially tough on people who are “tech collectors,” choosing new toys with every project just to mess around with them and gain “experience.” If you picked something new and knocked it out of the park on the project, we’re listening. Why did you take the risk in picking a new thing instead of using something established? Show your work, your justification is more important than your results in this case.

      If you’ve left a legacy of barely functional piles of duct tape and baling wire behind you, we can usually see right through you. You *might* be able to pull it out of the fire if you can really convince us you did your best within constraints that are out of your control, but it’s not looking good for you at all.

  17. Java is THRIVING .. as Androids language of choice by Anonymous Coward · · Score: 0

    Given Android is the largest / fastest growing platform, and given all the new languages on the block run on top of the JVM, Java is here to stay for a very very long time. It's only 'not cool' when people say they are programming in 'Java'. If they say they are 'writing a 'droid app', suddenly it's cool.

  18. Performance improvements have helped it survive. by BitterOak · · Score: 4, Insightful

    One of the main reasons Java may be "cooler" today than when it was first introduced is performance.

    In the early days of Java, it's VM architecture meant that it was significantly behind fully compiled languages like C/C++ in terms of performance. People were supposed to sacrifice speed for portability. Even for non-speed critical applications, slower languages were thought to be "less cool". Real men used C, and real, real men still coded in assembly language.

    But the VM technology in Java has gotten so sophisticated that it isn't significantly behind languages like C/C++ in terms of performance, and that can't be ignored. This is allowing some of the advantages of Java over C/C++ such as garbage collection, dynamic class loading, a certain degree of reflection, various safety systems, etc., to win over some programmers. Java may well be cooler today than it was 10 years ago, because it's really grown up and become a fairly useful language.

    --
    If I can be modded down for being a troll, can I be modded up for being an orc, or a balrog?
  19. Why Java? PASCAL is THE learning language by Sauce+Tin · · Score: 2

    I really wish the academic world would go back to the actual proper learning languages, such as PASCAL. In my university, the introductory course for programming is C++ (as a freshman.) C++ has little 'English logic.' However, if you know English, you should be able to read PASCAL code much better than C/Java code. PASCAL is closer to pseudocode, which is (usually) the first assignment in these classes. Why would you jump from pseudocode to a 'stricter language' like Java? What does /. think?

    1. Re:Why Java? PASCAL is THE learning language by Anonymous Coward · · Score: 0

      When I started U in 1997, Pascal was taught (for the last group of students). I hated spending time learning a language that would never be used outside of a classroom. I decided to learn C and C++ at the same time and transposed a lot of assignments to those two and then waited a year to take a file processing class so I could take it in C++. I was still not able to get a job until I taught myself PHP.

      I could not disagree more. Teach languages in use and the branch off from those. Make sure that students can graduate with specifically useful skills while also teaching them the understanding of the science as a whole.

      Java, C/C++/C#, PHP, Python, Assembly, Ruby, javascript/node.js.. those are the languages to start with and build from (in some order)

    2. Re:Why Java? PASCAL is THE learning language by Anonymous Coward · · Score: 0

      and if they cannot get the concepts of the language abstraction for a scripting language like PHP or Python, they should not be in CPSC

    3. Re:Why Java? PASCAL is THE learning language by BitterOak · · Score: 1

      I really wish the academic world would go back to the actual proper learning languages, such as PASCAL. In my university, the introductory course for programming is C++ (as a freshman.) C++ has little 'English logic.' However, if you know English, you should be able to read PASCAL code much better than C/Java code. PASCAL is closer to pseudocode, which is (usually) the first assignment in these classes. Why would you jump from pseudocode to a 'stricter language' like Java? What does /. think?

      If you want a more English-like language more closely tied to pseudo-code than C++ or Java, why not a language like Ruby or Python? At least that way students could learn object oriented programming as well. Pascal really doesn't have a niche anymore. It was a good teaching language in it's day. As a more up-to-date Algol it was a good language for teaching structured programming, but by today's standards, it's structures are not as flexible as they need to be, and classic Pascal is not object oriented. (There may be object-oriented versions of Pascal now, but that's not the original language any more than C++ is C.) Ruby and Python are both very easy to start programming in (one line "Hello World" programs) and scale well to more sophisticated projects. And they both remain very close to pseudo-code type designs at each step of the way.

      --
      If I can be modded down for being a troll, can I be modded up for being an orc, or a balrog?
    4. Re:Why Java? PASCAL is THE learning language by Anonymous Coward · · Score: 0

      I find plain language keywords annoying. They make it harder to discern syntax from identifiers on a cursory glance. Then again I may just be scarred from programming too much PL/SQL

    5. Re:Why Java? PASCAL is THE learning language by FlyingGuy · · Score: 1

      There may be object-oriented versions of Pascal now, but that's not the original language any more than C++ is C.

      Wow have you been living under a rock? Delphi first released by the now defunct Borland and now released by Embarcadero Technologies is probably the best RAD language on the market, bar none.

      On top of that it now generates native code for Windows, OSX, IOS, and Android. They even had a Linux version for a while called KyLix.

      It is OOP Pascal and it is the fastest compiler on the market and generates native binaries for all the platforms. The resulting binaries are amazingly fast and are generally on par with C,C++ AND Java. You can write them as GUI apps or console apps, take your pick. The runtime is royalty free and their ultimate version comes with drivers for just about every SQL database on the planet.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
  20. Just don't try to write an OS in Java by zieroh · · Score: 4, Insightful

    I'm in the process of hiring software engineers right now, so I've been exposed to a lot of resumes and had the opportunity to talk to a lot of people on the phone (standard phone screen). Invariably, all recent CS graduates list C on their resume as one of their languages. One of the things I ask every candidate to do on the phone is to describe how C strings work. This is my "marker", the test of how much time they've spent in C (vs Java, or ObjC, or whatever). If you're a serious C programmer, you know how C strings work. No exceptions. If you've spent your entire time in college (or even professionally) programming within an environment where strings are handled by object abstraction, you've probably never had to deal with C strings directly. A suitable answer to the question is as simple as "A C string is an array of chars with a null termination at the end".

    You'd be surprised at how many people fail the screening process (and thus are rejected) based on this single question. Probably close to 75%, and every single one of them has a CS degree.

    --
    People who say "sheeple" have about as much sophistication as an AOL user, and in fact are probably actually AOL users.
    1. Re:Just don't try to write an OS in Java by LetterRip · · Score: 1

      That is surprising that folks that claim C knowledge don't know that.

    2. Re:Just don't try to write an OS in Java by narcc · · Score: 2

      It doesn't surprise me in the least. Kids today don't care about learning details, they just go straight to the first library or framework that promises to hide such "arcane" details from them.

      They'll put C on their resume because they used C++ in an intro class. zieroh's test seems perfectly reasonable to me.

    3. Re:Just don't try to write an OS in Java by DamonHD · · Score: 1

      My favourite related Java question to ask in the context of security is: "What's the difference between char[] and String, eg if I have one in a critical API as a public static?"

      I'm quite happy to hear slightly 'wrong' answers as long as someone understands a little about wrapping/immutability and so on...

      Rgds

      Damon

      --
      http://m.earth.org.uk/
    4. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      agreed.

      my weed-out question (which troubles many people with 5+ years of "experience") is:

      write a function that takes an integer n, and returns the sum from 1 to n inclusive.

      basically, write a for loop.

      Many, many candidates fail at this stage and save my team a lot of time by removing themselves from consideration.

    5. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      what do you do if someone gives you

      int sum(int n) { return (n * (n + 1))/2; }

      as an answer?

    6. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      They'll put C on their resume because they used C++ in an intro class. zieroh's test seems perfectly reasonable to me.

      He is talking about CS graduates, not people with experience. They are typically not going to have more knowledge than what the classes taught them.
      Asking if they have an interest in programming outside of school will give the same result, except that that one is a lot easier to lie on. Asking how strings work is more reliable.

    7. Re:Just don't try to write an OS in Java by ljw1004 · · Score: 1

      It's crazy to solve this with a for loop O(n) when you can solve it with a direct formula O(1).

      What exactly are you looking for in your candidates?

    8. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      The devil on my shoulder is suggesting I use the function parameter, INT_MAX.

    9. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      what do you mean ?
      public static final char[] IV={'D','E','A','B','B','E','E','F'};
              or
      public static void doSomthingSensitive(char[] aParameter)

      the valid reason to handle unwrapped char array in java is for password manipulation, this is the only way you can avoid leaking them to the swap file by zeroing them....

    10. Re:Just don't try to write an OS in Java by Bite+The+Pillow · · Score: 1

      Think about it from the perspective of the CS graduate. The one who doesn't know how to tune a C.V. to be a good picture of what they know. They have experience and can prove it, as CS300 and 305 were all C, all the time. That's a year of C experience right there!

      But it's also the perspective of not knowing what you don't know. If you use standard C functions to find length, append, but never get into truncating because you make a new array and copy instead, you may actually get through 2 courses without ever needing to know there is a zero.

      You were told once, but you never wrote a line of code that needed to know about null-termination. Even writing the code "while(*p++ != '\0')" does not communicate the idea of null-term. It could be just a magic way of getting the compiler to do what you want, without conceptualizing the behavior.

      Pro tip: People who claim knowledge often don't know how much knowledge to claim.

    11. Re:Just don't try to write an OS in Java by DamonHD · · Score: 1

      Hi,

      That is a different and also interesting case, and just by bringing it up you'd pass my test.

      No, I meant something like:

      public static final String CRITICAL_ID = "whatever"

      in a secure API. If I use char[] instead what happens if a miscreant overwrites the content of the array; what BadThings might happen?

      Rgds

      Damon

      --
      http://m.earth.org.uk/
    12. Re:Just don't try to write an OS in Java by RightwingNutjob · · Score: 1

      A good programmer would know to return an unsigned long long int (not an unsigned long int, because that's only 32 bits on 32 bit unix), and use one internally.

    13. Re:Just don't try to write an OS in Java by ebonum · · Score: 1

      I'm partly in agreement with you. If someone puts something on their resume, if they say: "I know C", then I consider C questions fair game. If they can't answer your very simple question about C ( It is a good C Language lead-off question. I will use it in the future. ), I might get the impression that the person was being deliberately deceptive when they wrote up their resume. The most likely explanations are: Either they did use C and they are an idiot OR they are pumping up their resume with bs.

      That said, eliminating someone on one question is a bit harsh. People become nervous in interviews. Anyone can have a brain freeze for 20 seconds. I would want to see some form of pattern before turning someone down.

    14. Re:Just don't try to write an OS in Java by zieroh · · Score: 1

      He is talking about CS graduates, not people with experience.

      I'm talking about both, though I probably didn't make that clear enough. Generally, I'm talking about people who have graduated with CS degrees within the last 0 to 4 years, and who (for values greater than 0) have some professional experience writing code.

      --
      People who say "sheeple" have about as much sophistication as an AOL user, and in fact are probably actually AOL users.
    15. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      Sorry, but IMO, you're an idiot. You never reject based on one question. Ever consider the possibility they may be having a bad day ? Or any number of reasons to get a question wrong.

      Of course you're only hurting yourself and your company, so carry on.

    16. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      Its amazing which things I consider to be standard knowledge (like C strings) that just aren't any more. I've known how they work since grade 7 and all the reasons not to like them as well.

      I've had similar problems working with people who can't read API documentation and understand what to do next ...

    17. Re:Just don't try to write an OS in Java by zieroh · · Score: 1

      If you use standard C functions to find length, append, but never get into truncating because you make a new array and copy instead, you may actually get through 2 courses without ever needing to know there is a zero. You were told once, but you never wrote a line of code that needed to know about null-termination.

      I can put a finer point on it: very few good programmers are created in college programs. The good ones were writing code before they ever entered college. Even very prestigious schools, I've found, turn out downright shitty CS graduates if they weren't already programming before their freshman year.

      Oh, and to put this back on topic: if you've spent the bulk of your college education writing Java code, I'm not interested in hiring you.

      --
      People who say "sheeple" have about as much sophistication as an AOL user, and in fact are probably actually AOL users.
    18. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      They'll put C on their resume because they used C++ in an intro class.

      And because they don't want the automatic resume collection system or some HR drone to throw their resume in the trash simply because C programming is one of the "requirements". If the recruiting process wasn't such a broken system, candidates wouldn't be forced into lying and using guerilla tactics to get a callback instead of being lost in the resume database.

    19. Re:Just don't try to write an OS in Java by drewm19801927 · · Score: 1

      If you copy and paste in "while(*p++ != '\0')" without figuring out exactly what is going on, that's a pretty big red flag that you're not ready to work in C. I absolutely agree RE the difficulty of not knowing how to precisely convey how much experience you have in a given language on a CV though...

    20. Re:Just don't try to write an OS in Java by jareth-0205 · · Score: 1

      To be fair, CVs are beasts that end up being read by people who are just keyword searching so you have to put every word you've ever vaguely come up against just to get past HR. There's a bunch of stuff I wouldn't want to be pushed too far on my CV... I figure I can work it out on the fly if necessary.

      You have to trust the interviewer has a good idea what is actually necessary for the job and isn't just on a catch-them-out power trip. Hopefully the original poster does actually need C knowledge.

    21. Re:Just don't try to write an OS in Java by istartedi · · Score: 1

      LOL, Bad newbie candidate: "C strings work just like Java strings, but in C". Good candidate: "C strings are arrays of characters that use the null character to mark the end". Experienced candidate: "C strings work???".

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    22. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      That is surprising that folks that claim C knowledge don't know that.

      I don't claim to know C but even *I* knew the answer to that question!

    23. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      One of the best programmers I've ever known would have failed both your 'programming before college' and 'not Java' tests.

      Which would suggest that there are problems with your tests. That's not unusual; there really isn't a way to evaluate programming ability in any kind of short time frame, so we come up with all sorts of proxy tests to get around that.

      Some proxy tests are better than others - these sound a bit like they're the fairly typical 'find more people like me' type.

    24. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      Funny thing, I learned many years ago this detail about C strings when I was using VB and researched on how to interact with the Windows API (which uses C strings). Only some time later did I learn C and found the reason for them being so.

    25. Re:Just don't try to write an OS in Java by Daniel+Hoffmann · · Score: 1

      If they have both Pascal and C on their resume ask them to compare the strings on both languages and then ask "which one is better?" If they say one over throw the resume away.

    26. Re:Just don't try to write an OS in Java by Anonymous Coward · · Score: 0

      That is surprising that folks that claim C knowledge don't know that.

      If you've ever been responsible for hiring, you wouldn't be surprised at all.
      If you've ever tried to get your resume through HR, you wouldn't be surprised at all, either.

      Hiring for tech positions is terribly broken. HR will post a boilerplate job description that lists every technology under the sun; the recruiting system will do a dumb keyword scan, and candidates will be passed through or eliminated based on how effectively everyone gamed the system.

    27. Re:Just don't try to write an OS in Java by rdnetto · · Score: 1

      I'm curious why you think that neither is better than the other.
      I'm not familiar with Pascal, but as I understand it:
      C strings are a series of characters, followed by a null terminator.
      Pascal strings are a series of characters, prefixed by their length. If the implementation uses more than one word/byte to store the length, then you aren't limited to 255 characters.
      Given how many security problems there have been in C programs due to incorrect handling of strings, the Pascal approach seems much safer (at the cost of a few additional bytes of memory per string, but I suspect each character is stored in its own word anyway for performance reasons).

      The C++/D implementation seems to be the best so far though, since storing the length of the string with the pointer enables creation of substrings in constant time.

      --
      Most human behaviour can be explained in terms of identity.
    28. Re:Just don't try to write an OS in Java by Daniel+Hoffmann · · Score: 1

      Pascal strings are better in most cases, but C strings are not without its merits, for example you can not write a one line string copy in pascal (just kidding).

    29. Re:Just don't try to write an OS in Java by GiganticLyingMouth · · Score: 1

      Except that the original question only specified the parameter to be an integer, not whether it was signed or not (nor what range of values it could take)

  21. Java? by Anonymous Coward · · Score: 0

    Other than Minecraft, I haven't used anything that made use of Java in at least 10 years.

    1. Re:Java? by buddyglass · · Score: 1

      If you've used a credit card or done any banking in the past 10 years you've probably made use of Java. Or if you've used an Android phone. If you're speaking narrowly in terms of desktop apps then sure, I'll buy the 10 years stat.

    2. Re:Java? by pezpunk · · Score: 1

      really? how do you maintain a path through the internet that doesn't include any java-based back ends? impressive feat, that.

      --
      i could live a little longer in this prison
  22. Re:Performance improvements have helped it survive by Sauce+Tin · · Score: 2

    "But the VM technology in Java has gotten so sophisticated it isn't significantly behind languages like C/C++ in terms of performance, and that can't be ignored." I highly disagree. First, For every level of abstract sophistication you add, you may increase the 'agility' of the language, however you are still farther away from raw machine code. Java is notorious for stacking crap on top of crap on top of crap. Second, Java is far behind in performance. Any true huge performance gains are usually done with the aid of a third-party library, coded in C/C++. Java still can't do integer math anywhere near the speed of C. Java WILL NEVER be as fast as C/C++, because C/C++ isn't run as interpreted bytecode. It compiles straight to machine code. In these terms, this is more a physics problem, not (just) a code problem.

  23. Still not cool, *but* ... by djbckr · · Score: 1

    Java as a language isn't fun - I haven't used it for many, many years now - but the advent of JVM-targeted languages makes the Java ecosystem fantastic.

    Starting with the JVM - a very good machine that runs on pretty much anything, without having to re-compile your program. Perfect, no, but is anything? And the performance (given that it's a virtual machine) is top-notch.

    Then there are the JVM-targeted languages: Scala, Groovy, JPython, BeanShell, etc, etc... Pick your poison.

    Then there is a crap-ton of very useful libraries out there, and they can be used with any of the above targeted JVM-targeted languages.

    So, we can whine about Java (the language) but really, I use it (the JVM, the other languages, and the libraries) to get stuff done. Cool, no. Productive, yes.

  24. Because there is much need at the middle ground by bigsexyjoe · · Score: 2

    Yes, the middle ground has some disadvantages of both extremes, but it has some of the advantages to both.

    C++ maps to hardware well. An enterprise web solution, doesn't need that. It should have automatic memory management. The scripting languages are not strongly typed. That makes the code a little less maintainable and a little slower.

    When Twitter used RoR, it was a nightmare. It just wasn't performant enough. When they went to Scala things got a lot better.

    Would Twitter ever want to use C++? I doubt it. They are probably a bit hardware agnostic and they don't want to deal with the classes of bugs that C++ has.

    1. Re:Because there is much need at the middle ground by Aighearach · · Score: 2

      Twitter uses C++, Java, Scala, Ruby.

      There is some storied history to their Ruby use. Basically, they didn't know how to scale databases, couldn't grow fast enough, and spent 3 months falsely blaming Ruby before bringing in some real db people and fixing their architecture. Ruby was never the problem. And they were still using Ruby for years. Over time, they wrote more and more parts in other languages, which is natural because they're big and they want each piece to be optimized.

      So you wrongly doubt something which is already widely reported and discussed. ;) They're "hardware agnostic" but that means using any commodity hardware. That is not a problem for C++, certainly not in the last 10 years, and twitter isn't 10 yet.

    2. Re:Because there is much need at the middle ground by antsbull · · Score: 0

      No - there are interviews out there with members of the actual Twitter development team that specifically state they ditched Ruby because it couldn't scale.

      It was nothing to do with the database. Revisionist history much?

      Let me guess, you use Ruby and don't like the fact that it might not be the be-all and end-all?

    3. Re:Because there is much need at the middle ground by Anonymous Coward · · Score: 0

      Twitter uses C++, Java, Scala, Ruby.

      There is some storied history to their Ruby use. Basically, they didn't know how to scale databases, couldn't grow fast enough, and spent 3 months falsely blaming Ruby before bringing in some real db people and fixing their architecture. Ruby was never the problem. And they were still using Ruby for years. Over time, they wrote more and more parts in other languages, which is natural because they're big and they want each piece to be optimized.

      So you wrongly doubt something which is already widely reported and discussed. ;) They're "hardware agnostic" but that means using any commodity hardware. That is not a problem for C++, certainly not in the last 10 years, and twitter isn't 10 yet.

      No, Ruby was the problem.....such so the the backend is pretty much all Scala. How many times do we have to come across stories of apps that require such scale switching from PHP, Ruby etc to those "lame" languages/stacks before people start accepting the obvious?

  25. All that packaging by Anonymous Coward · · Score: 0

    How is that strange? The main reason why Java is still around is because of the virtual machine. It never ceases to astonish me how ignorant some of you people are. It's asinine to use Java to program things where you know are only going to be used on one platform as there are better languages for that. However, if you know that you need your software to work on a wide variety of platforms and run mostly the same on all of them, then Java is one of the few choices you have.

  26. Tool - it's a tool and nothing more by Anonymous Coward · · Score: 0

    Succinctly, Java is the middle ground between low-level C languages, higher level languages and popular scripting languages (JavaScript). It's neither good, nor bad, at general purpose programming tasks; and consider it an answer to the "What flavor of vanilla ice cream do you want?" question. Purchase decision makers will look at it as a lower risk, and much more likely to be viable in 5 years, than the latest trendy scripting, framework or JavaScript library.

    "Will it be alive in with recently added significant new features 5 years?" is a critical business question for the development and consulting industry. This is why the 2 guys in a garage open source solution or niche scripting language/framework are avoided by business decision makers. Refer to the 1970s "Nobody got fired for choosing IBM" statement.

  27. It still suffers from the same problems by Anonymous Coward · · Score: 0

    I was a Java beta user before it was even released. The issue then as it is still to this day: It "almost" works. If you actually try to use the language to accomplish something non-trivial then you will hit roadblock after roadblock. Either a buggy API or a not-quite fully functional API. In the end you end up doing so much work to make your damn program run correctly that you might as well use something that is better in the first place (those choices generally being C/C++ or a scripting language like Lua).

    This is not to mention how horribly and annoyingly verbose it is.

    1. Re:It still suffers from the same problems by Anonymous Coward · · Score: 0

      Don't forget to mention the cross-platform myth. If you write cross platform Java you almost always still end up doing tons of work to get things working correctly on every platform. There are always little details here or there that work one way on one platform or buggy on another or whatever.

      It is far easier to write cross-platform C/C++ or script code, no joke.

  28. What's the point? by Anonymous Coward · · Score: 0

    I used to hate Java, but there is no better language than java to write business related applications specially because of the huge library that comes with it and vast amount of tools that you can choose from to do your job. Despite from all negative talks I believe Java is still a nice language to build both desktop and server applications and don't forget android market ;)
    Again I'm a big fan of C/C++ but hey let's be honest, how much you can make out of C++ these days. Unless youre a game developer C++ is for no use. :|

  29. Debating "cool" is for teenagers by bigsexyjoe · · Score: 1

    What the fuck is this? Is it "cool"? Cool not a term that has a sharp definition, so it's kind of pointless to talk about what is cool. I think A is cool, you think B is cool, that's the end of it.

    Java highly used. It solves problems that people want to solve and some people would even say are interesting to solve.

    About ten years ago Java 5 came out making it a little more modern and relevant. Then it stalled. However, Oracle has picked up the momentum and it is releasing new versions again. It now supports Lambas and it is expected to have new versions with new features being added every couple of years. I believe that if Oracle keeps releasing new things it won't be relegated to being the language of legacy code. Eventually when there is too much cruft, Scala or something else will start to take over. But that could take a very long time. Look at C++. It's still going strong.

  30. java powered my career for the lat 15 years...cool by Anonymous Coward · · Score: 0

    Kids, why not go out to play, while grownups get dinner ready.

  31. "What about now?" by Anonymous Coward · · Score: 0

    Now that it belongs to Oracle, Java isn't even cool enough to be uncool anymore. Bah.

  32. hmm... by buddyglass · · Score: 1

    It bugs me that we're using words like "hip" and "cool" to describe programming languages. That anyone would choose to learn (or use) a language on the basis of it being "hip" is dumb. I'm looking at you, Ruby.

    1. Re:hmm... by styrotech · · Score: 1

      It bugs me that we're using words like "hip" and "cool" to describe programming languages. That anyone would choose to learn (or use) a language on the basis of it being "hip" is dumb. I'm looking at you, Ruby.

      Heh, I think that crowd has mostly moved on to Go (via Node for some of the earlier ones).

  33. Perl, Java, COBOL all say bye to hipsters by Anonymous Coward · · Score: 0

    Hipsters, begone! You have Swift now. You have Dart. You have JavaScript. Meanwhile, professional programmers will keep using Perl, Java, COBOL, and all the other languages you've thankfully and mercifully left alone. We're going to get real work done with them, as we always have, long before you came and long after you're gone.

  34. How to make any programming language seem cool by stevez67 · · Score: 2

    Create a calendar showing scantily clad beautiful women reclined on cars and motorcycles writing code, and it will appear to be cool. To 12 year old boys.

    1. Re:How to make any programming language seem cool by sg_oneill · · Score: 1

      Hah. Remember the "Fuck Perl" cheerleader image for PHP. Sure was an enticing image, but holy schmoly was PHP3 a disaster of a language.

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
  35. Re:Performance improvements have helped it survive by Anonymous Coward · · Score: 0

    Java still can't do integer math anywhere near the speed of C.Java WILL NEVER be as fast as C/C++, because C/C++ isn't run as interpreted bytecode

    Er... wait, what? A Java "int" is a 32-bit integer, and "long" is 64 bits. They work just like C ints and longs, and Java floats and doubles are the same things as C floats and doubles. Java math compiles into the same machine instructions as C does, there is no special slowed-down instruction set in your CPU for Java.

    If you are somehow running interpreted Java, that's *way* retro. Hotspot, the current Sun/Oracle Java system, started compiling byte code into machine code some time in the last millennium. And it's been getting steadily faster ever since - that is the nature of compiler development.

  36. Java Today... by Anonymous Coward · · Score: 0

    Got a good public shot in the arm with Minecraft as far as the desktop goes for gaming. Java on the server is doing good as well or you wouldn't have things like Liferay and such still around and being developed. The crap code is being cleaned up and it isn't that bad of a language even though it's far from perfect.

  37. What is cool? by lophophore · · Score: 3, Insightful

    What is cool? Programming isn't cool. Programmers aren't cool. Being a guitar player in a great band is probably cool. Being a chick magnet might be cool. When has being a Java dev gotten anybody laid?

    The only people who care about how "cool" a language is are posers. A professional developer is going to choose the tool that is going to let him/her build what he/she wants with the least fuss. For a lot of today's applications, that tool may well be Java.

    What's uncool is a skill that won't get you a job. Java can get you a job, help you buy a car, a house, live your life.

    --
    there are 3 kinds of people:
    * those who can count
    * those who can't
    1. Re:What is cool? by DamonHD · · Score: 1

      When has being a Java dev gotten anybody laid?

      Umm, I don't think you're holding it right. WORKSFORME.

      Rgds

      Damon

      --
      http://m.earth.org.uk/
    2. Re:What is cool? by Anonymous Coward · · Score: 0

      It got them laid when they sold their startup for $100 million dollars. Programming is cool. Why aren't you coding in COBOL still? It will get the job done. You don't need fancy screens, green screen will work just fine. You can do Visual Basic too. Are you? You program in some dead ass language and your career is going to be fucked. Cool is definitely a factor. No one wants to work with some old tired language.

    3. Re:What is cool? by blaster151 · · Score: 1

      Programming languages CAN be VERY cool. Maybe not by the benchmark of getting laid, but by the feeling of elegance and power that can arise from languages and frameworks that hand you new paradigms to play with. Languages should not merely be evaluated by their utilitarian function; there is an aesthetic component to it as well (though beauty/simplicity in a language can often yield great utilitarian benefits).

  38. Re:Performance improvements have helped it survive by buddyglass · · Score: 1

    Since moving to Android development (from the back-end Java world) I'm a little surprised that ProGuard doesn't get used more in the non-app space. That gives you another round of optimization before your byte code even hits the JVM.

  39. Re:Performance improvements have helped it survive by DamonHD · · Score: 2

    "WILL NEVER": gosh, not true and never has been unless you know the exact CPU and execution paths and data sets that you are compiling for, for all executions of the statically-compiled code. Please don't regurgitate this stuff.

    When maintaining a C++ build system used internationally by a large bank I had to guess what the optimal target instruction set variant, cache line size, etc, would be over the lifetime of the output code, which was always a compromise over London/NYC/TOK/etc and a huge range of dev and production hosts of various ages. And with most/much of the library stack unsafe for C/C++ threading even though almost none of our machines (eg desktop or server-farm) where single CPU you could not then and could not now say whether C++ or Java would be necessarily faster on a given machine, given all the CPU- and run- specific optimisations the JVM has available to it that C++ does not.

    I currently work on a Java low-latency high-frequency trading platform in the day job and an ASM/C/C++ based microcontroller platform for my start-up. And I think that I've been using C++ and Java for most of their existences, amongst other languages (I've been writing ASM for >30y); I have a fair idea of what is fast and what is productive.

    Rgds

    Damon

    --
    http://m.earth.org.uk/
  40. Never was cool and never will by Anonymous Coward · · Score: 0

    But it a necessary evil until Android support app made in different language and become the primary dev language. I don't personally see java use anywhere else. And it would never get natively install on my computer, though I would tolerate an application that have java bundled to itself, but as long it not installed system wide.

  41. Oracle by Anonymous Coward · · Score: 1

    So for part of the past ten years I have maintained a commercial software package written in Java. And the biggest issue with Java is Oracle. Users hate the way the JVM treats them... always has an update always wants to install software that is a detriment to their computer. I hate the bugs in Swing and the poor integration on the Mac side. I also hate the functional programming is cool so let's make Java more functional stuff that is happening. Not because I have a dislike for functional programming but because it seems to be just more bloat. It's the reason I hate PERL. I don't need another way to do something, I just need the obvious thing to work. So really the best thing that could happen to Java would be for Oracle to give it to Apache and be done with it.

    PS Programming languages are a tool. Tools should be boring. Boring means it is comprehensible, reliable and just plain gets the job done.

  42. Is COOL a new acronym? by ubersoldat2k7 · · Score: 1

    When you search for jobs for developers, Java/.Net devs are in general better paid than the "cool" script-kiddies. There are also some C/C++ jobs but not as many. I've also seen a decline in RoR jobs lately, so there you go.

    The thing with working in "cool" projects based on the technology used, is that you'll have to keep on learning the new fad every two or three years. We had this with PHP, then it was RoR, now it's Node.JS. If you chose Python, tough luck because it hasn't been mainstream yet. It doesn't matter what language you're using, probably the project is a CRUD application and believe me, doing user authentication, input validation, database operations or sending emails is a PITA in Ruby, in JavaScript, in PHP and in every freaking language.

    OTOH I've been developing software for the last 15 years using different languages/platforms and I don't see where all this hate for Java comes from. I mean, it's everywhere, it's free, it has great tools and libraries, lots of documentation and lots of people working on or with it and big names behind it. Name one language/platform that has all of this and we can have a talk.

    1. Re:Is COOL a new acronym? by gweihir · · Score: 1

      The TIOBE index does not agree with you at all on C/C++/Objective-C, and Pythin is almost as high as the highest places .Net thing (C#):

      http://www.tiobe.com/index.php...

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  43. Part of the point... by Anonymous Coward · · Score: 0

    is it limits the damage mediocre programmers can do to a system.

    We have a couple of people who grew up with Visual Basic and really shouldn't be let loose in a complex C++ environment. With Java there
    are enough constraints and type checking and IDE support so they can do pretty well.

    Plus if you want a cross-platform GUI it's probably your best hope.

    1. Re:Part of the point... by Anonymous Coward · · Score: 0

      Plus if you want a cross-platform GUI it's probably your best hope.

      Oh, God! Are you serious?

      I'm yet to find a cross platform GUI for Java that doesn't suck. SWT is the prettiest, also being relatively performant because it can use the native GUI elements on each platform, but you need to mess about with .jar bundling to include all of the Windows, Linux and OSX versions of the SWT native libraries and then provide your own custom class loader to get the right version loaded before starting your own GUI.

      And that's just the GUI. If you want to mess about with volumes/partitions/optical media, you again have to write your own libraries for each platform. (Why couldn't Apple have just used the regular /etc/fstab, mtab, mount and umount FFS! Not Java-related, but there isn't even a working GIO/GVolume/etc implementation for Gnome on OSX!)

  44. One word: Minecraft by stereoroid · · Score: 2

    If Java can be made to do that, that's got to mean something ...

    --
    (this is not a .sig)
    1. Re:One word: Minecraft by kthreadd · · Score: 1

      Take an extra look at your Minecraft folder. There's lots of native libraries there. Java is only used for the top UI layer.

  45. Re:Java is THRIVING .. as Androids language of cho by Anonymous Coward · · Score: 0

    Ignoring the fact that Android doesn't really use Java but only something almost like it:
    Look at the stats, the percentage of pure-Java apps on Android is constantly shrinking, for performance and portability reasons most apps switch to e.g. C++ with only the tiniest possibly wrapper in Java. And if it was possible to get rid of that, they probably would.
    So on Android it's not the language of _choice_, but the one Google chose for them and they now have to use.

  46. Re:Performance improvements have helped it survive by DamonHD · · Score: 1

    +1 for ProGuard; I use it for my main Java Web app and apart from anything else PG vastly reduces the size of the .war I'd otherwise have to ship.

    Also, not all of my target hosts have a full server-class JVM/optimiser, so getting stuff done up front is a good thing.

    Rgds

    Damon

    --
    http://m.earth.org.uk/
  47. that depends by anomalous+cohort · · Score: 1

    I remember attending a meet-up on this very topic within the past year. It was held at the offices of a small startup recently acquired by twitter. The presenter made the distinction between Java as the programming language and Java as the runtime environment (i.e. JVM).

    In his opinion, Java the programming language was on its way out whereas Java the runtime environment was here to stay.

    Why is that? The JVM reflects countless man hours of stability fixes, performance improvements, and scalability work. It's a real big investment that only mega corps with deep pockets can make.

    In my experience, what I have found is that there is a certain breed of programmer who doesn't like Java the programming language. It seems to me that it is because Java is statically typed. This means you have to type out all these interface and class names with every method signature. It's a lot of typing. You add in all those getters and setters boilerplate and you find that you have a larger, some would say cumbersome, code base to maintain.

    If you find that you resemble that description, then check out Clojure which is a version of lisp that compiles to Java byte code running in the JVM. It can, but doesn't have to, be pre-compiled and it is dynamically typed. You can provide type hints but you don't have to. For this reason, Clojure programs are much more dense than Java programs. Less typing in order to get the job done.

    Be careful what you ask for. All that typing means that you can find and fix a lot of bugs in the compile step. With dynamically typed languages, you get to find those bugs at runtime. Maybe that is why other posters here believe that Java is for the B programmers.

    1. Re:that depends by RabidReindeer · · Score: 2

      Be careful what you ask for. All that typing means that you can find and fix a lot of bugs in the compile step. With dynamically typed languages, you get to find those bugs at runtime. Maybe that is why other posters here believe that Java is for the B programmers.

      Precisely. The problem is, that if you design things out ahead of time, it takes longer before you are at the point where you can show "results".

      The spirit of the times is instant gratification. The faster you can get from basic premise to displayed web pages, the better you look.

      Your actual architecture may be paper-maché over balsa wood and chicken-wire, but if you can show something visible to the PHB and the users ASAP, you're "productive". Even though in a month's time, the whole sysem may end up crashing and destroying vital data. Or worse, sharing it with various unsavory people who broker such things to even less desirable people.

    2. Re:that depends by Anonymous Coward · · Score: 0

      Your actual architecture may be paper-maché over balsa wood and chicken-wire, but if you can show something visible to the PHB and the users ASAP, you're "productive". Even though in a month's time, the whole sysem may end up crashing and destroying vital data. Or worse, sharing it with various unsavory people who broker such things to even less desirable people.

      are you a coworker of mine, are you in a private public partnership ?

    3. Re:that depends by mcvos · · Score: 1

      In his opinion, Java the programming language was on its way out whereas Java the runtime environment was here to stay.

      Absolutely. Java the language is a chore, leading to very verbose code. The JVM however is one of the best things since sliced bread. A managed environment like that is extremely useful.

      If you find that you resemble that description, then check out Clojure which is a version of lisp that compiles to Java byte code running in the JVM. It can, but doesn't have to, be pre-compiled and it is dynamically typed. You can provide type hints but you don't have to. For this reason, Clojure programs are much more dense than Java programs. Less typing in order to get the job done.

      Another good option is Groovy, which very easy to get into for Java programmers, since 99% of legal Java syntax is also legal Groovy syntax. But for everything, there's also a better, more readable way to do it. Best interaction with Java of any JVM language. It's basically what Java should have been.

      Be careful what you ask for. All that typing means that you can find and fix a lot of bugs in the compile step. With dynamically typed languages, you get to find those bugs at runtime. Maybe that is why other posters here believe that Java is for the B programmers.

      No, if you're a competent programmer, you don't rely on the compiler to find all your bugs, because it won't. You rely on unit tests, which means your basic bugs will be found at build time. The percentage of bugs that a statically typed compiler will find for you is small. You still need extra tests to find all your other bugs, and those tests will also find your basic type errors.

    4. Re: that depends by blippo · · Score: 1

      I don't think the language itself is bad - there is not much bloat left in java8. The bloat is coming from code coventions and jee. And perhaps some retarded APIs - most of the core APIs are rather nice. Maybe low level programming is a bit awkward but doable, and i suppose you need C and assembly for AAA game engines.

      There are a lot of architecture astronauts and other complicators using Java, that's for certain.

      The JVM is rather fast once it's started, but that takes a while.

  48. Ten years ago by Anonymous Coward · · Score: 0

    Java, XML, and Web Services were being pitched together as the new foundation for enterprise IT. Maybe that had something to do with Java not being considered cool.

    Ten years later, XML has been largely superseded by REST and Web Services is basically gone (well, on the same trajectory as CORBA before it), but Python and RoR have not succeeded in replacing Java. And C# is Microsoft-centric.

    1. Re:Ten years ago by NormalVisual · · Score: 1

      Ten years later, XML has been largely superseded by REST and Web Services is basically gone

      I think you might have meant SOAP, not XML. There are plenty of people writing REST services that speak XML.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
  49. Java Is Corporate by Baldrson · · Score: 1

    Java has stuck around for the same reason Cobol stuck around for so long: It's corporate.

    Does that mean Java isn't cool? No. But are we going to say Cobol is cool because it stuck around for so long?

  50. Re:Performance improvements have helped it survive by buddyglass · · Score: 1

    You should run some benchmarks with and without Proguard. I'm curious to know what performance benefits it provides (if any). I was actually thinking more of running things like the web containers themselves through ProGuard. Tomcat vs. Tomcat+Proguard. JBoss vs. JBoss+Proguard. Or Eclipse, for that matter.

  51. why a programming language needs to be hip? by umghhh · · Score: 1

    I thought a programming language is just a tool to do some job. Some tool are better some other are not so good and some cannot do particular task. Sometimes we work with a tool that is not suited for the job because of bad choice made long time ago by a person long gone and the change to more suitable tool never happens because it costs money and time. Sometimes the tool we have to work with is just good enough. I know none that is perfect for the job and by nature of things doing next project with the same tool may feel uncomfortable in slightly different then it used to. Other than that you still need to know about memory management even if you use a system with GC. But for all purposes the language is just a tool no need for it to be hip or cool. In fact I felt certain coolness about a programming language only once in my life. It was long time ago and when I look at this now then I wonder how silly I was back than.

  52. is there any actual news here? by Anonymous Coward · · Score: 0

    i was expecting an article about the current state of java, maybe it's prospects............. something?

  53. Java & C# by Qbertino · · Score: 3, Funny

    Java combines the wonderfull readability of C++ with the blazing speed of smalltalk. C# is an innovative language from Microsoft that takes those two features of Java and adds in the portability of Visual Basic.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:Java & C# by gweihir · · Score: 1

      Well said! But I think Java has managed to be even more wonderfully readable than C++.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  54. You Answered It Yourself in Your Question by curmudgeon99 · · Score: 2

    Java was originally the free alternative to the Evil Empire--Microsoft. Because everything Microsoft sold was serious green--and because everything in the Java world could be found for free [Eclipse vs Visual Studio], [MySQL vs SQL Server], [Tomcat, JBoss, etc vs IIS] it was a no brainer.

    Now, the single reason that Java is allegedly uncool is because it's the incumbent. It has been kicking ass, dominating the Enterprise Tech stack for so long that it's obviously not going to be hip and cool.

    .NET is dead or dying while Java is the bearded king, hanging on and going strong.

    Sure you have Python or Perl or Ruby or Go or Hack or Node.js or whatever but they just never seem to catch on in a big way. Sure, you'll find somebody who swears by Python or who thinks that Facebook's Hack abortion is the shit but they just don't catch on and they become curiosities.

    Java remains the shit because it was the Anti Microsoft. Write Once, Run Anywhere [which of course was never totally true] but at least it's not Microsoft. Now that Microsoft is dead you have all these companies that tried to dethrone it but they have not been able. Google's "Go"? Even Google chose to base Android on Java. Java is not cool but it still owns the marketplace. For the foreseeable future.

    1. Re:You Answered It Yourself in Your Question by Anonymous Coward · · Score: 0

      Mod this person up. He gets it.

    2. Re:You Answered It Yourself in Your Question by hibiki_r · · Score: 1

      Java is uncool because it moves at a glacially slow speed, and has an ecosystem full of enterprise tools that do nothing but slow us down.

      The first real shock came from Ruby on Rails. I'd never use the thing for anything large or requiring much customization, but it sure showed many Java programmers how the state of the Java art, full of Spring and Hibernate, was pretty unproductive, all things considered. To write production code, you don't really need the mess of AbstractFactoryProviders that Java had become. After this, we started seeing people writing JVM languages that cut some of that madness.

      So now Java has been playing catchup to Scala, Groovy and Clojure, because you have the same Write Once, Run Anywhere features, but the code is 1/3rd of the size. Even languages that try to work on closed ecosystems try to mimic that kind of style: Just look at how much Swift looks like Scala's reference-counting cousin.

      Java's inability to evolve the language will remain an issue for the foreseeable future. Just look at all the things java 9 is supposed to offer: The roadmap could be sold as a cure for insomnia.

    3. Re:You Answered It Yourself in Your Question by curmudgeon99 · · Score: 1

      I have done production work using Ruby on Rails (but the back end was still all Java). You are free to use any language you want. Learning Java has turned out to be the best career decision I have ever made. I have never heard any employer say: "The API on that language is too big!" You are free to use whatever language you want.

    4. Re:You Answered It Yourself in Your Question by Anonymous Coward · · Score: 0

      I more or less agree with everything in your post save for the parts about GoLang. Go was released to the public around 2009, 2 years after Android was introduced, the decision to go with Java(A very smart choice I might add) was made. Go was created for a specific problem that Google was having.....that Java, C++, and Python apparently was not doing a great job of fixing....namely building back-end systems that could scale the way they needed them to. Go IS catching on...but people are not using it as a "better" Java....which is not surprising as that is not what Go was designed to be in the first place.

    5. Re:You Answered It Yourself in Your Question by curmudgeon99 · · Score: 1

      Danged interesting. Thank you for this.
      My primary beef with Go is the same one I had with .NET and now with Facebook's Hack language. When the language name is a common word, it makes it hard to search on. If you go to stackoverflow and search on "Hack", you get everything but what you want. Try "Facebook Hack" and you get articles on ways to make things work on Facebook. It isn't until you go for "Facebook Hack Language" that you get what you wanted. So, how do you search for "Go"?

      On Stackoverflow.com, when you search for "Go", you get:

      1,488,459 hits and none dealing with the language.

      Searching on "Google Go" gets you:

      52,546 hits.
      It takes a search on "Google Go Language" to yield fruit.

      But I guess you already indicated the hack for getting those results, ala "dot-net": GoLang

  55. Why should it be "cool"? by nurb432 · · Score: 2

    Its a programming language, not a car.. It should be treated like a tool. What should be 'cool' is what you do with it..

    --
    ---- Booth was a patriot ----
  56. I am sure..... by Anonymous Coward · · Score: 0

    I am sure from a programmers perspective Java is a great language, since it allows you to do things which allow you to run crappy code, but run it just before a deadline. C/C++ is less forgiving. From a desktop technician to sysadmin's perspective it's a steaming pile. When I faced that fork in the road in college I am glad I chose C/C++.

    1. Re:I am sure..... by Anonymous Coward · · Score: 0

      Is there anyone more hated than a desktop technician or sysadmin? It's no wonder they're made so much fun of. It truly is a pathetic career and always chosen by the runts that couldn't hack programming.

    2. Re:I am sure..... by gweihir · · Score: 1

      Except that I do not like Java as a programmer one bit, I completely agree.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:I am sure..... by Anonymous Coward · · Score: 0

      Spoken like a true Java developer.

  57. Re:Performance improvements have helped it survive by Anonymous Coward · · Score: 0

    You're an idiot. Java byte code compiles to native machine code and has the advantage of dynamically crafting the native code for the specific CPU it's running on. C/C++ can't do that because it's statically compiled. Also, Java allows for AOT compilation, thus, allowing you to compile the entire app to native code with no hotspotting.

  58. Re:Performance improvements have helped it survive by lsllll · · Score: 0

    Woosh! That was the sound of his comment over your >30y assembler skills. What he said was correct. Instructions in Java are encoded into bytecodes, which must still be interpreted and by the JVM and executed as machine code on a processor. All this translation takes time. You cannot tell me that adding two integers in Java is "directly" translated (without overhead) into the same machine code the a C compiler would generate.

    --
    Is that a roll of dimes in your pocket or are you happy to see me?
  59. "coolness" is a stupid measure by Anonymous Coward · · Score: 0

    Whether or not it is "cool" java has always been extraordinarily effective. Performance and scaleability that far exceed any of the "cool" scripting languages of the past decade. Far better reliability and productivity than C. Nothing has come along that beats it. (By "Java" I mean "any language that runs on the JVM")

    1. Re:"coolness" is a stupid measure by gweihir · · Score: 1

      In fact, the last is true, as Java never could measure up. The thing is that Java made the dumbest programmers able to produce bad, but runnable code because the language is so bad that you cannot do anything with it without a modern IDE. That does remove the need from programmers to actually understand the language tough.

      And no, reliability of Java with the typical Java programmers is actually far, far worse as C with the typical C programmer, and so is productivity.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  60. Trash sticks around by gweihir · · Score: 1

    Until somebody makes a real effort to get rid of it. Juts look at PHP, JavaScript, etc.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  61. The language you want today is Swift by Applehu+Akbar · · Score: 1

    [Ducking from a cloud of hurled, sharpened WIndows 8 install discs.]

  62. Java may not be cool, but the JVM is ballin out by Anonymous Coward · · Score: 0

    http://vertx.io/
    http://cassandra.apache.org/
    http://en.wikipedia.org/wiki/Hadoop

  63. JavaBOL by bwcbwc · · Score: 1

    Yeah Java is the COBOL of the 21st Century. It's the lowest common denominator, almost every programmer knows at least the rudiments, and the tool and support ecosystem around it is huge.

    --
    We are the 198 proof..
  64. Not Java, but the people who write it by Gothmolly · · Score: 1

    It's a product of its times - with many more "computer science" people in the field, math says you're much more likely to run across crappy ones than you were before. (Not a bell curve issue, the bad ones are more memorable) Add in the H1B headwobble factor, and you have a lot of shitty java code, doing things because it can not because it should. Add in a corporate culture where time to market trumps reliability or maintainability, and you have a management philosophy that rewards the above behaviors.
    Java is shitty because the world has turned.

    --
    I want to delete my account but Slashdot doesn't allow it.
  65. It's not Java, it's the JVM by MillerHighLife21 · · Score: 3, Interesting

    Java as a language is a pain to develop with. Java selling points have always revolved around the JVM itself and a bullet proof, over-engineered backbone that is needed for "enterprise" workloads. In big company's who don't have urgent timelines where they are willing to invest time to micro-engineer solutions it's used very heavily. For applications under heavy workloads, the high stress parts are usually built in Java for maximum efficiency but it's been the JVM, JDBC, server infrastructure and the polished library of tools around it that have buoyed it's success.

    With the ability to run other languages on the JVM and get ALL those benefits without actually being required to code in Java though...now that's pretty cool. jRuby, Scala, Groovy, Clojure, etc are making the Java world a heck of a lot more interesting. If the early rumblings around the dramatic gains that jRuby is making with Java 8 are true you might just see the world implode at the idea of Java performance with Ruby development timelines. Early public benchmarks on Techempower are already looking about 30% faster than Scala.

    --
    "Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
    1. Re:It's not Java, it's the JVM by DickBreath · · Score: 2

      The JVM does some pretty amazing things. It has some pretty amazing optimizations. You can run a lot of languages on the JVM.

      Most modern languages now take garbage collection for granted. If you build your new language on the JVM, you get GC for free. And a GC that has been researched, developed and optimized for almost two decades. You get a choice of GC algorithms. Each GC has many tuning parameters. (More than you need.)

      You're right. It's not Java that is cool. It's the JVM.

      The JVM compiles the JVM bytecode to machine code. On the fly. It continuously dynamically profiles your code to determine what needs to be compiled to native code. It aggressively inlines functions. Even though all methods are virtual functions, if the JVM can prove that there is only one implementation that exists for this method, or only one implementation that could be the actual one that would be invoked at a certain point, then it compiles it as a direct non-virtual call.

      But, classes can be dynamically reloaded during runtime. So other code that inlined methods from the class being reloaded now has inlined code that is obsolete! The JVM will ensure that those methods are recompiled (possibly re-inlining, or not) the code from the newly loaded class. And it will ensure that this recompile happens before the stale inlined code can be executed again.

      All of this is cross platform. Because your code is compiled by a compiler that knows about the actual hardware you are running on, it can do optimizations that are impossible in an ahead-of-time compiler like C. It can use extended instructions from the instruction set of the actual processor you are using. Furthermore, since it knows the entire set of code making up the application, it can do global optimizations that are also impossible with ahead of time compilers. An ahead of time compiler doesn't know anything about the implementation of the libraries that your program will link against at runtime. If the compiler knew about the actual implementation of the libraries that your application code was calling, there are optimization opportunities that an ahead of time compiler cannot make assumptions about.

      With the JVM you can have heaps that are tens of gigabytes (or hundreds with some third party JVM implementations) and have max GC pause times in the tens of milliseconds.

      That is what makes 'java' cool. It's the JVM. It's also the JVM that makes Java so darned fast. Not the Java language itself. Nor the Java compiler to JVM bytecode. The JVM has a unique perfect storm of amazing features that make it so attractive.

      --

      I'll see your senator, and I'll raise you two judges.
    2. Re:It's not Java, it's the JVM by DickBreath · · Score: 1

      It's not just the JVM. It's the fact that Java (and all JVM languages) have Garbage Collection.

      When people (even in this Slashdot comments) talk about non-GC languages and compare then to GC languages such as Java, they are missing something important.

      I have seen comments here comparing the language features, and concepts computer science students learn from either C or Java, etc. But they miss something very important.

      When you have GC, you have something that deeply enables the ability to create vast libraries of code that interoperate well together. It is something so deeply implied in the source and binary ABI and APIs that you don't see it. Because of GC, there doesn't need to be any 'contract' in APIs about who owns what data structures. Who is responsible to delete what. What the protocols are for who is responsible for disposing of what, etc.

      This cannot be overstated. This enables the creation of libraries that can create, or be passed external data structures, and can create and return data structures, without any concern for who owns what or who is responsible for disposing of what.

      This is true whether the language is Java, Python, Ruby, etc, etc, etc. The GC languages are in an entirely different class than C or C++. Yes, I know that those languages have GC grafted on. But which GC mechanism? Do all of your libraries support it? Universally? What about some libraries use this memory management protocol and contract (maybe even non GC), and other libraries use a different memory management protocol and discipline?

      --

      I'll see your senator, and I'll raise you two judges.
  66. Linus by Anonymous Coward · · Score: 0

    https://www.youtube.com/watch?v=Aa55RKWZxxI

  67. Insightful point on communities; thanks! by Paul+Fernhout · · Score: 2

    I'm moving more of my own work from Java to JavaScript, but that is mainly because JavaScript is easiest to deploy almost every where. I generally like Java+Eclipse better for big projects otherwise. However, with tools that compile other languages to JavaScript, and browsers that can get near native performance from JavaScript if written in a certain way, I'm hoping the "JavaScript" approach will continue to gain in benefits because it is just easier to deploy than Java. It's too bad Java app deployment to the desktop was never a real priority (even with Java Web Start). As an example of the difference (including in sandboxing), some school teachers can get fired for installing new software without permission (which could include a Java app which can do anything), but they can use a web browser to load up an educational web page which uses JavaScript to run a simulation without too many worries.

    I fought against Java back in the late 1990s compared to using Smalltalk. Back then Java was just a mess and a mass of hype. But I can accept Java is now a half-way-decent solution for many things now that many of the worst rough edges of Java have been smoothed off. I still miss Smalltalk though, and to some extent (not all), JavaScript recaptures some of the Smalltalk flavor and community -- if I squint just right, I can kind of see the entire Web as one big multi-threaded Smalltalk image. :-)

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  68. Re:Performance improvements have helped it survive by DamonHD · · Score: 1

    I promise you that it was worth saving many MB in the .WAR and associated thumb-twiddling time, plus showing me in the logs which library and other routines were actually being used. I never felt the need to time stuff (since performance was at least not visibly worse). Shame on me!

    If I get a chance I'll do as you suggest, though it'll be tricky with all the many things going on concurrently.

    Rgds

    Damon

    --
    http://m.earth.org.uk/
  69. Re:Performance improvements have helped it survive by DamonHD · · Score: 2

    Except that once JIT/Hotspot is involved all or most of the executions *are* of compiled machine code, optimised to the particular CPU on hand and the particular data set for this particular job. So things like dynamic inlining *for this particular job* can allow the JVM to produce *better* machine code which will execute more quickly than statically-compiled code.

    The translation takes time, but for long-running tasks that may well be easily amortised away.

    So single-threaded Java can beat single-threaded C++.

    But I can also bring more CPUs to bear on the code safely with Java for a given level of code complexity (well, now C++ finally has some sensible volatile semantics, that's a little less true).

    And there are other factors such as the generally forced synchronous nature of C++ heap handling which can work against it.

    Rgds

    Damon

    --
    http://m.earth.org.uk/
  70. Re:Java WAS cool... 10 years ago by Anonymous Coward · · Score: 0

    Now Java is obsolete, because you can create portable applications easily with libraries like Qt.

    Really? When did Qt for Solaris get introduced?

  71. Broken by Anonymous Coward · · Score: 0

    On the language level, broken piece of shit that is at least 5 years behind C#.

    To list a few:
    1.True generics has not yet come
    2.Checked exception. Thanks to it there are now excessive use of try-catch, printStackTrace and non-handling or wrong-handling (ex: return null) of exceptions everywhere in 3rd party Java libraries.
    3.Lack of generator (yield-return) is a pain in ass when writing iterators.
    4.No language-integrated expression tree - part of LINQ, not lambda/closure but code being translated into AST to be evaluated and modified at runtime, so you may eventually have LINQ-to-SQL or portable workflow rule or FXML binding expression written in Java.

    1. Re:Broken by Anonymous Coward · · Score: 0

      C# is the Windows Phone of languages. It will forever languish in its shit polluted cesspool until it dies. This POS language has about the same market share as that POS Windows Phone OS.

  72. Ecch by Enry · · Score: 1

    As a non-programmer, Java stinks.

    The idea of it being sandboxed and thus 'more secure' is blown out of the water every time there's an update, of which there are many. Each update from Oracle wants to install the Ask toolbar.

    In its earlier days applications had to be distributed with specific versions of the JRE. Even more recently there were plugins that only worked with Java 6 and the vendor had no intention of getting them to work Java 7. The idea of 'write once run everywhere' is mostly dead.

    On the server side (Tomcat) it's okay. On the embedded side (Android) it really seems to have finally found its stride..

    1. Re:Ecch by martin_dk · · Score: 1

      The bundling of AskToolbar with Java is a prominent example of browser hijacking, and Oracle does this in the open without even bothering to comment on the issue.

      Until the end of 2014 danish citizens have been forced to use Java in order to access our banks and public accounts. The automatic updates install the AskToolbar. Even if you manually succeded in uninstalling it earlier.

      In the attempt to create a secure channel of communication via Java, everybody was served a third party browser toolbar which scrapes your pageviews and records your every move on the internet.

      This is how much Oracle cares about security and privacy on the internet.

    2. Re:Ecch by Shortguy881 · · Score: 1

      As a non-programmer, your points hold no weight here.

      --
      Brilliance without wisdom, power without conscience. Ours is a world of nuclear giants and ethical infants.
  73. Java or JVM? by iamacat · · Score: 1

    As long as the later is adequate, success of the former is immaterial. A language like Scala that runs on top of JVM can make full use of availability of the platform and libraries of existing code. For me, the biggest limitations of JVM seem to be 2^32-1 limit on array indices and no option for explicit, real time memory management. Perhaps experts greater than me can comment more. Does byte code provide enough information to support vector instructions of modern CPUS/GPUS?

  74. java sux by Anonymous Coward · · Score: 0

    The deal is its an operating system running inside an operating system but it is very inefficient at it.

    The idea of portable code is nice. Even isolating each app from the host operating system
      And being able to run code on any machine which the virtual machine compiles for..

    Um but the issue of it being interpreted rather than a distint platform in which its code compiles and runs natively on all operating systems? Meh. Basically it is more efficient if Java was a language which compiled to native code on any platform IMO, performing as good as ASM or C .. And having a native set of tools which replicate operating system APIs but work on all operating systems akin to Java based DirectX, database APIs, interface APIs, storage APIs, etc. It has more value than the current system which runs and interprets everything at run time.

    POSIX is nice. Each and every operating system out there is technically compliant with it, even Windows using services for Unix, and Mac OSX, Linux, BSD, etc. Therefore Unix/PoSIX is waaay more powerful than Java .. And almost just as clean and neat.

  75. Anyone remember, "Write once, run anywhere"? by chaoskitty · · Score: 1, Insightful

    Sun's slogan for Java used to be, "Write once, run anywhere." Remember that? Sun didn't make JVMs for many platforms, and didn't even have an official JVM for GNU/Linux for ages. Add to that the fact that each major version of the JVM deprecated features and introduced incompatible ways to do things previously done other ways, and it's no wonder it has become the case that we (meaning IT folks) have to keep around an older (perhaps virtual) machine which has an older and certainly insecure JVM to talk to some hardware device or application which requires older Java. Qlogic switches come to mind.

    Since the JVM isn't portable, Java isn't portable. Since software written for one JVM version can't necessarily run on another version, it's not very backwards compatible. Since it has so many security issues, you either have to hope that whoever makes your JVM keeps it up to date or that you're very careful about how it's deployed.

    I can't personally think of anything more precarious than trying to deploy real software using Java.

    1. Re:Anyone remember, "Write once, run anywhere"? by sproketboy · · Score: 1

      Dude stop talking out of your ass. You clearly have no idea what you're talking about and your smelling up the place.

    2. Re:Anyone remember, "Write once, run anywhere"? by Daniel+Hoffmann · · Score: 1

      Just to nitpick one of your wrong comments, deprecating features is a healthy thing to do. Languages without proper deprecation mechanics built-into them quickly turn into a clusterfuck.

    3. Re:Anyone remember, "Write once, run anywhere"? by Anonymous Coward · · Score: 0

      I guess the past 15 years I've spent developing java on Win and deploying to Linux, OSX and/or Unix, or developing on Lunix and deploying to Win and/or OSX - without any OS specific code whatsoever - were all in my imagination.

  76. Re:Java WAS cool... 10 years ago by Anonymous Coward · · Score: 0

    Linux killed Solaris. Didn't you get the memo?

  77. It still suffers from the same problems by Anonymous Coward · · Score: 0

    At least give some examples... like the inability to create symlinks until Java 7.

  78. Still going strong, huge community! by pchenden · · Score: 1

    My workplace provides Java consultants for hire, and is doing quite well.
    Recruiters are in contact with me every week.
    The amount of Open Source Java software available and actively developed, especially libraries, is amazing!
    All Android apps are Java-based too.

    To balance this out, some of my colleagues and I are looking into other languages and consider ourselves polyglot programmers, not Java-only.
    Especially other languages on the JVM like Groovy and Scala are popular.

  79. UI programming by Anonymous Coward · · Score: 0

    in C# UI programming is like a breeze while in Java it is like someone farting in your face.

  80. bah by sociocapitalist · · Score: 1

    Because there's nothing quite like a nice cup of hot java....

    --
    blindly antisocialist = antisocial
  81. C, C++, Java, C#, JavaScript, TypeScript, Swift... by Anonymous Coward · · Score: 0

    Preface: I'm a big fan of James Gosling, Bjarne Stroustrup, and Anders Hejlsberg.

    Let me take you back to 1997. C++ might have been the language which got you the raw power of the PC and gave you all the APIs you needed to minimize external dependencies, it also left you debugging memory management, and debugging raw calls all the time with no safety. Java introduced dependable checks on everything and requirements that you catch or declare things that could go wrong. In addition, the JavaDoc mechanism of taking comments and turning them into HTML documentation went a great distance to enable people to explore and with the aid of a search engine find the answer faster. Java's requirement of naming the files the same as the classes helped impose structure on the code that C++ left as an exercise to the user, and the removal of the header file ordering problems also eased life for developers. Java introduced well-thought out runtime frameworks with built-in string syntax that resembled nicer languages at the time like Visual Basic, and enabled rapid application development of GUI tools as well as server side code. Reflection was also something that was new to people who had previously only programmed in compiled languages like C, C++, or Visual Basic.

    Some time in 2000/2001, C# gained a huge amount from Java, just as Java gained a huge amount from C++, but added a lot as well, beginning with compatibility for directly calling native code without wrappers using the C# struct type and Attributes, and the .NET Framework was a highly efficient runtime that was deployed along with Microsoft Windows XP and updated. C# quickly added "new" language and framework features like generic support along with new generics packages, but the biggest win over Java that C# brought was the Visual Studio product release focused on the editing and debugging and refactoring of C#. To be fair, Microsoft dedicated the entire Development Division (devdiv) to C# at the sacrifice of C++ and VB (which irked quite a few C++ and VB developers back then).

    Mono deserves a short mention, as does functional programming with lambdas, and the fact that Java and C++ gained many of these features in competition with C# - C++ had generics before C#, and C++ templates are far more powerful. Some of the newer language features like dynamic programming - duck typing and anonymous inline methods and lambdas come from JavaScript and other functional programming languages. var - the compiler determined static type and LINQ - language integrated query along with extension methods in the framework and outside the framework are all mechanisms to help modern developers more concisely do what they want to do.

    Today, the landscape of developers is shifting again, to languages like JavaScript on platforms such as NodeJS and Chrome. The front end languages like TypeScript (also authored by the founder of C#) and Swift (Apple's new contender) attempt to enable more efficient representations of data and code, while expressing as much type specificity and simplification of developer patterns. Compiler intermediate languages and runtimes like LLVM, the JVM, MSIL, and V8 blur the performance line between different languages to the extent that it doesn't really matter terribly which language you program in today - C++, C#, Java, JavaScript / TypeScript, or a dozen others, or which framework you use. We have lots and lots of tools. Java is like C++ - it's got a lot of baggage. Even C# is feeling heavy these days. JavaScript + TypeScript seems to be the new contender of "Write Once, Run Anywhere". All you need is to download Node, and npm install some modules, and boom, you're up and running. Whether your code runs in a browser and gets debugged by the browser debugger which is _quite_ competitive with the best tools out there like Visual Studio or XCode, or your code runs under a NodeJS instance and you connect it to a browser or IDE to debug it.

    My point is that any language or framework is good. It's progress. Rejoice for the great choices you have today and the wonderful support that you get by today's editors and other tools. Java unmistakably contributed to their existence.

  82. Performance improvements have helped it survive. by Kartu · · Score: 1

    Note that there is nothing that makes JIT compilers generate slower code.
    On the opposite: JIT compiler can gather profiling data, and improve code over time. (e.g. knowing which branch would be taken most of the time) what static compiler can not.

    Inherent "slowness" and "memory hungriness" comes from the automatic memory management (garbage collection) and additional runtime type/boundary checks. Also a bit because of "write once run everywhere" (e.g. sin/cos functions are like 100 times slower than in C/C++, because CPU's features aren't used, to get exactly the same result on all platforms)

    From my personal experience, Java's speed was on par with C/C++ code, while having much bigger mem footprint.

  83. I don't care about Java by Anonymous Coward · · Score: 0

    "archaic irrelevance" is a slight exaggeration when it's still occupying the 2nd spot on the TIOBE index.

    Having looked a bit into scala, it doesn't have too many features on java once you factor in Java 8 (which admittedly copies it's features straight from scala). OO programmer veterans will still use scala to write java-like code. It's compiler is a mess, both internally and performance wise.
    The type system, while alleviating some of Java's annoyances (primitive types not being classes) and being "beautiful", is complicated and unintuitive. If you look at the standard library, the method signatures are completely overwhelming, especially once you go into higher order functions. I find the operator overloading ugly, too, once you go further than overloading basic arithmetics and collection operations. All these things look cool and useful in small projects or in a talk, but if you work with huge codebases they lead to issues when maintaining code that other people write. I also remember it feeling kinda "hacky" around the edges, where they had to make poor design decisions, just because the "hardware" of the JVM demanded them.

  84. fat cow? by PC_THE_GREAT · · Score: 1

    Maybe because when one think of Java, one automatically thinks of a heavy framework and bad user experience. That is the general feeling about anything associated with java.

  85. It's an unavoidavle pain in the ass now by gelfling · · Score: 1

    It's Microsoft

  86. wasn't cool then, now nor in the future by Anonymous Coward · · Score: 0

    I used Java a number of years ago for a few courses back in uni. I found it better than C++ but it still felt really clumsy. It might not be the "cool" or popular opinion to have, but I feel like C# craps all over Java and then some (particularly in the last 2-3 years with the improvements in the .NET Framework). The only area where Java has clear superiority is its cross-platform ability, and that's only because Microsoft can't get their heads out of their bums and make the CLR cross-platform (Mono doesn't count).

    It'll be interesting though to see what ends up happening in the long term. With all these languages built on top of it, I suspect the JVM will grow increasingly more important and Java less relevant as better languages are build on top of the JVM.

  87. Java may not be uncool, but it's really annoying by Anonymous Coward · · Score: 0

    I feel like Oracle's update practices are trying to force Java into users' faces. Your choices for updates seem to be to not update at all, or to have whatever your doing interrupted to tell you about the update, and the updates seem to require that the average user sit there and watch the update process so they can see all the things that Java does, but which Java isn't really doing for them. There has got to be a better way to do that.

  88. Poorly Phrased Question by fygment · · Score: 2

    When I read "_how_ C strings work...", I began to think of what I knew about how the C language is actually implemented. And frankly, I don't know how C is implemented (eg. what happens after parsing, how things get converted to CPU instructions). Even though I've spent a fair bit of time writing in the language, I would have stumbled on that question and perhaps have asked you to clarify (something a younger person is less likely to do).

    When I read your answer, I realized you were asking "how are strings defined in C" or "how do you use C with string types".

    See the difference? On that alone, I guess you may have screened out a lot of good people.

    Tangentially, this is also a good reason to not pay too much attention to survey results unless you have actually read the questions that were asked in the survey.

    --
    "Consensus" in science is _always_ a political construct.
  89. Cool? No. Common? Workhorse? Yes. by mr_mischief · · Score: 1

    I doubt too many people think a cast iron pan is cool. Yet it can be used to bake, broil, fry, sauté, reduce, and more.

    Is mergesort cool? Are linked lists and hash tables cool? They are common building blocks, but are very useful.

    Is DRAM cool? Are x86_64 processors sexy?

    Is the Honda Accord or the Toyota Camry "bitchin'"?

    Are asphalt shingles as impressive as a slate roof?

    When your job calls for a sturdy workhorse, you don't need a thoroughbred racehorse. You don't haul gravel in a Huracan. If your project calls for Java, or C++, or Fortran, Ada, or even for COBOL then you use what gets the job done. If it calls for rapid deployment from a small team, you might use Perl, Python, Ruby, Javascript, or even a shell script. If you need Erlang, Forth, Swift, some assembly language, or some Basic dialect due to platform, existing code, etc then you just suck it up and do that. If you have a chance to do greenfield development and can pick your language, pick anything that works.

    If you're in a Java shop working on a Java project, you write and debug Java. Sometimes there's more than one right tool for the job, but you use the one everyone in your workshop has and can use.

  90. Learning a language is easy; but a paradigm is not by CraigCruden · · Score: 1

    Learning a language is easy, but learning a paradigm is not. I usually pick up a language in a matter of days and can program fairly competitively pretty soon.... but I found that most developers that came to Java programmed how they did before because they failed to grasp the paradigm that the language was designed for. Programmed in Java for 15+ years, but prefer programming in Scala over Java. Java ecosystem is scattered with "advancements" that only later did we learn was holding us back. I am sure Scala will eventually be the same way. I found that moving to Scala with it's full support of object-oriented paradigm and full support of functional paradigm has allowed me to produce cleaner more concise code.

  91. Had the best jobs when I looked... by evanthx · · Score: 1

    I prefer C# honestly. I live in Seattle, so I figured a C# job would be easy to get. And it was...but the Java jobs paid a lot more. So I am still a java programmer.

  92. Free & OpenSource by Anonymous Coward · · Score: 0

    It's mostly free and mostly opensource, that it until Larry changes his mind.

  93. Exactly by bigsexyjoe · · Score: 1

    As you said, they use Java.

    You don't really have any citations for anything you said. But I doubt they did huge amounts of refactoring in three months and then stayed with their new solution even after they found out the language wasn't the problem.

    "Over time, they wrote more and more parts in other languages, which is natural because they're big and they want each piece to be optimized."

    Exactly. I didn't say Java was one language to rule over all. I said it has it's place and companies such as Twitter and Google agree.

    1. Re:Exactly by Aighearach · · Score: 1

      You don't really have any citations for anything you said.

      I didn't cite it because their blog posts, first blaming Ruby/Rails and a few months later, retracting that and explaining the problems, are some of the most popular blog posts in the history of Ruby, and a major milestone in the public discussion of these issues.

      If you don't even know about it, you're too far outside the developer community for my comment to have been targeted at you. Sorry, I only worry about the nerds when I post. Everybody else can suck it. And if a nerd didn't know, they'd find a search engine, and ask, instead of whining at the internet to contain citations.

    2. Re:Exactly by bigsexyjoe · · Score: 1

      No. It is not on the people who read your comments to research your claims. It makes more sense to just doubt them than try to find out if what some random guy on the Internet says is true.

      In any case, you admit they use Java, so I have no idea what your point is.

  94. Java is obnoxious by rhyous · · Score: 1

    1. Java is obnoxiously verbose. Despite having an example of properties from C# and cries for them to support them, they have failed to do so. So the syntax for creating getters and setters takes so much longer. Everytime I wrote code in Java over C#, it takes so many more lines. C++ compiler should support properties by now too.
    A few years old but: http://www.slideshare.net/jeff...

    2. The IDE. Besides having the look of an app from the 90's, Eclipse is a mess. It takes hours and hours of plugin research to get the same feature set as the default install of VS. Even basic features, like basic font size and themes, are unacceptably difficult. Then you have to add plugins to do anything worth while. Netbeans seemed to work better for some things but have less plugins.

    3. The java installation is a pain. Both java and the IDE. Microsoft has the benefit of .NET embedded by default. And if a new version is needed, it comes with the IDE. The install of Visual Studio is simple and easy. You download and install it and it will install the needed .NET version and everything just works with one install. With Java, you have to find the right JRE/JDK and heaven forbid you get the one that doesn't have that enterprise feature. Eclipse is just a zip file. It isn't even an installer. So you have to manually add options to the Start page yourself if you want them. Not to mention the pinning issue. You pin it, but when you run it, it doesn't run under the pinned icon.

    4. Oracle. Enough said.

     

  95. buggy bugware by Anonymous Coward · · Score: 0

    Huh. Well, let's see what the good old CVE database thinks of Java.

    http://web.nvd.nist.gov/view/vuln/statistics-results?adv_search=true&cves=on&query=java&pub_date_start_month=0&pub_date_start_year=2014&pub_date_end_month=7&pub_date_end_year=2014&cvss_sev_base=HIGH

    75 critical vulnerabilities this year, nice! Granted, some of these are IBM|(?:Sun|Oracle)|OpenJ(DK|VM) repeats of the same bug, them all having copied the same security flaw...I do recall some developer stating that their Java app never needed restarting, and was designed as such. Then, the JVM stated corrupting its heap after several hundred days of no restarts, and boy were their restarts and good fun to be had.

  96. And it's still a disaster by whitroth · · Score: 1

    As witnessed by the 100+line stack traces when tomcat crashes....

                        mark

  97. Re:I hope not, de-facto by bbsalem · · Score: 0

    Java became an industry standard not because it was well designed. I balked at diving into it when I worked at Sun Microsystems in 2003; I had hired on there in 1997 because of my experience with system admin, the shell, C and Fortran and absolutely hated the design of Java class libraries, both for their stupid complexity and the fact that the language was, and is very unfriendly to a visually impaired engineer.

    The reason for Java's use is that the class library design is complex enough to obscure the code written in Glass Houses and corporate and business applications that programmers would have to be specialized by a long learning curve. This was intentional and it created an artificial elite, and artificial security. It was the PL/1 of the Millenium, and like IBM, Sun marketed it as sufficiently daunting that casual use would be discouraged. There was no manageable subset that one could use without getting on a relatively steep and verbose learning curve. As soon as Java was open sourced in 2006 ACM came out with its own interface that remedied many of the interface flaws of Sun's libraries, see acm.jar. And although that was intended for use in a teaching environment, it was an interface that would have made the language far more useful.

    This is not merely the strong typing issue. It is the history of the class libraries, this and other issues such as around inheritance are being addressed by newer languages, such as Julia and Python. Any CS department that makes Java its introductory language should reconsider and Python seems like a good choice. It is a good choice for scientific programmers with the ipython notebook establishing a new standard for literate and reproducable programming.

  98. is jave 7 version 67 safe from recent hack by Anonymous Coward · · Score: 0

    has anyone heard if the jave 7 version 67 is safe because i heard it got hacked by the russians and yah i want to no if i should be updating it

  99. Re:I hope not, de-facto by LinuxFreakus · · Score: 1

    Why is java obscure? Sure you need to write a bunch of boilerplate code, but it is just a programming language which happens to be widely used. There is nothing about it which makes it particularly hard to learn or "elite". Python is not "easier". It just takes less boilerplate to do a lot of common things (although in many cases the performance suffers). There are certainly things in the Java language which I'm not fond of, but show me any language and I'll tell you about its flaws. I have yet to find a perfect one.

  100. It's still a turd by ebvwfbw · · Score: 1

    No two ways about it. PIA to develop in, PIA to debug in, PIA to maintain. Still it seems we're in the critical patch of the week club. Fix it ORACLE! Tired of you guys band aiding it and then patches to the patch and patches to that patch instead of fixing the base problem. Might be painful to fix code once the base problem is fixed, however it seems like we're dying of a thousand cuts.

  101. do we still argue about which language is best by Anonymous Coward · · Score: 0

    There are quite a few languages using the JVM now so your not tied to java syntax if you don't like it. And .net did the same thing with it's CLR.
    I don't know why people get so entrenched in the ms versus java arguments. Some time soon it'll all change again and we'll all have to learn something new. Hopefully it'll be better than what we have now.

  102. Why the hate? by Anonymous Coward · · Score: 0

    Java is one of the most pure and structured OOP languages i know of.
    I think the hate boils down from the fact that, just like with python, it's a language that has a "right way" of doing things.
    It's not just all javascript do what you feel like land.

  103. For Java programmers only by paulo.ortolan · · Score: 1

    If Java is not cool, when Java was?

  104. Re:I hope not, de-facto by bbsalem · · Score: 1

    Why is java obscure?

    What is the very first thing you have to say to write a Java program as required by Sun's Class Libraries?

    It is:

    public static void main(String[] args)

    This has to be shown to a complete and utter novice in the very first program he can write, and it is "biolerplate", as you put it, which that person will not understand at all without knowing quite a bit about object hierarchy and method prototypes. The design of acm.jar hides this nonsense, behind an object console. The interface for the novice is much simpler.

    Sure you need to write a bunch of boilerplate code, but it is just a programming language which happens to be widely used. There is nothing about it which makes it particularly hard to learn or "elite". Python is not "easier". It just takes less boilerplate to do a lot of common things (although in many cases the performance suffers).

    Java has been taught as an introductory programming language, and not necessarily to CS majors, only. It is widely used, especially by business, and I think that the way it was designed and sold to them was as a language that was intentionally designed to be hard to learn; only for people who could tough it out through a steep learning curve; lots of up-front concepts and details to learn before you can write your first useful program. I know, I took Sun's Java courses in the 1997 time frame. The most difficult part is not the language design, you can eventually learn the rationale for the way main is called, it is the complexity and number of class libraries. As proof of that note how fat the Java in a Nutshell book from O'Rieley is. Last time I looked it was close to 600 pages of dense text, Like PL/1, I think the language was designed to be obscure and to select for an elite that worked for a bank or financial company in their Glass House, and it was sold that way by Sun as a form of security by obscurity. Java will be used for a long time, but if you note the number of other languages with totally different syntax that use the JVM, that tells you that others think they can readily design a better language. The alternative interface in acm.jar, written by the ACM in 2006 should inform you as to how much it needed improvement as soon as Sun open sourced the class libraries.

  105. I like Java by Anonymous Coward · · Score: 0

    Wasn't all that keen on it when I first saw it back in the mid 90's, but I've been working with it for the last 13 years now and I've come to like it.

    One of my favorite aspects of it, is that it is so strongly type cast ... yes more typing (blah blah), but knowing that the right type is always being use is great! :)