Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Java Open Source Oracle Programming

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

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?
This discussion has been archived. No new comments can be posted.

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

Comments Filter:
  • Java is the (only) required programming course for the IT major at my University. /sigh
    • Re:I hope not (Score:5, Insightful)

      by Pino Grigio ( 2232472 ) on Sunday August 24, 2014 @02:26PM (#47742679)
      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.
      • Re: (Score:3, Interesting)

        by Z00L00K ( 682162 )

        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.

        • Re:I hope not (Score:4, Insightful)

          by Anonymous Coward on Sunday August 24, 2014 @03:32PM (#47743041)

          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).

        • 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.
        • Re:I hope not (Score:5, Informative)

          by RabidReindeer ( 2625839 ) on Sunday August 24, 2014 @06:18PM (#47743909)

          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.

          • Re:I hope not (Score:4, Insightful)

            by Wootery ( 1087023 ) on Sunday August 24, 2014 @09:08PM (#47744725)

            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.

        • by mcvos ( 645701 )

          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.

      • Re: (Score:3, Insightful)

        by Anonymous Coward

        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,

    • Re: I hope not (Score:5, Insightful)

      by bugnuts ( 94678 ) on Sunday August 24, 2014 @02:26PM (#47742683) Journal

      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.

      • Re: I hope not (Score:5, Insightful)

        by Aighearach ( 97333 ) on Sunday August 24, 2014 @04:08PM (#47743229)

        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.

      • Re: I hope not (Score:4, Insightful)

        by WarJolt ( 990309 ) on Sunday August 24, 2014 @04:12PM (#47743261)

        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.

    • Re:I hope not (Score:5, Insightful)

      by Aighearach ( 97333 ) on Sunday August 24, 2014 @04:02PM (#47743199)

      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.

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

  • What's the point? (Score:2, Insightful)

    by jeff4747 ( 256583 )

    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 "sc

    • by Lennie ( 16154 )

      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.

    • 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.

    • by MythMoth ( 73648 ) on Sunday August 24, 2014 @02:36PM (#47742737) Homepage

      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.

    • Re:What's the point? (Score:5, Interesting)

      by Giant Electronic Bra ( 1229876 ) on Sunday August 24, 2014 @02:42PM (#47742759)

      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.

      • by fnj ( 64210 )

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

        • Re: (Score:3, Insightful)

          by narcc ( 412956 )

          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.

        • Re:What's the point? (Score:4, Informative)

          by Aighearach ( 97333 ) on Sunday August 24, 2014 @04:35PM (#47743405)

          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.

        • by Giant Electronic Bra ( 1229876 ) on Sunday August 24, 2014 @05:13PM (#47743595)

          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.

    • "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.
    • by bill_mcgonigle ( 4333 ) * on Sunday August 24, 2014 @02:52PM (#47742811) Homepage Journal

      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.

      • by fnj ( 64210 )

        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.

        • He may have assumed the normal distribution.
          • 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!

    • by Kagato ( 116051 )

      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.

    • 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 dou

      • 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 somethi

    • by msobkow ( 48369 )

      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 Comput

    • Re:What's the point? (Score:4, Interesting)

      by DoofusOfDeath ( 636671 ) on Sunday August 24, 2014 @03:08PM (#47742883)

      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).

    • 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.

    • Re: (Score:3, Informative)

      by drolli ( 522659 )

      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

    • Comment removed based on user account deletion
  • by Rinisari ( 521266 ) on Sunday August 24, 2014 @02:25PM (#47742667) Homepage Journal

    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 [scala-lang.org] is basically a next-generation Java. Java with functional programming, or really, vice versa. JRuby [jruby.org] 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 [clojure.org] 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 [ceylon-lang.org], Groovy [codehaus.org], Jython [jython.org], and dozen of others [wikipedia.org] 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.

    • by buddyglass ( 925859 ) on Sunday August 24, 2014 @03:54PM (#47743147)

      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 [tiobe.com] 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".

      • by buddyglass ( 925859 ) on Sunday August 24, 2014 @05:12PM (#47743589)
        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 [tiobe.com]? Peaked in February 2011 when it reached 7.0% in TIOBE's index. It's currently sitting at 3.1% in August 2014.

        Ruby [tiobe.com]? 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.
  • by Kagato ( 116051 ) on Sunday August 24, 2014 @02:28PM (#47742693)

    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.

    • by StormReaver ( 59959 ) on Sunday August 24, 2014 @06:25PM (#47743945)

      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.

  • 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.
  • 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.

  • by DoofusOfDeath ( 636671 ) on Sunday August 24, 2014 @02:41PM (#47742755)

    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.

    • by afgam28 ( 48611 ) on Sunday August 24, 2014 @06:34PM (#47743987)

      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 [hueniverse.com] 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.

      • 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

    • by hey! ( 33014 )

      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.

  • by BitterOak ( 537666 ) on Sunday August 24, 2014 @02:44PM (#47742771)

    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.

    • "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
      • by DamonHD ( 794830 )

        "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

    • 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.
  • 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?
  • by zieroh ( 307208 ) on Sunday August 24, 2014 @02:53PM (#47742813)

    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.

    • That is surprising that folks that claim C knowledge don't know that.

      • by narcc ( 412956 )

        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.

    • 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

  • 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

  • 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 s

  • 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.
  • 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.
  • What is cool? (Score:4, Insightful)

    by lophophore ( 4087 ) on Sunday August 24, 2014 @03:56PM (#47743165) Homepage

    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.

  • by stereoroid ( 234317 ) on Sunday August 24, 2014 @04:21PM (#47743323) Homepage Journal

    If Java can be made to do that, that's got to mean something ...

  • Java & C# (Score:4, Funny)

    by Qbertino ( 265505 ) <moiraNO@SPAMmodparlor.com> on Sunday August 24, 2014 @05:35PM (#47743685)

    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.

  • by curmudgeon99 ( 1040054 ) on Sunday August 24, 2014 @05:39PM (#47743711)
    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.
  • by MillerHighLife21 ( 876240 ) on Sunday August 24, 2014 @08:29PM (#47744533) Homepage

    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.

    • 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 comp

A morsel of genuine history is a thing so rare as to be always valuable. -- Thomas Jefferson

Working...