LWN: Comments on "Carrez: The real problem with Java in Linux distros" https://lwn.net/Articles/406884/ This is a special feed containing comments posted to the individual LWN article titled "Carrez: The real problem with Java in Linux distros". en-us Fri, 05 Sep 2025 08:11:11 +0000 Fri, 05 Sep 2025 08:11:11 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net OT: dependency and ABI mismanagement https://lwn.net/Articles/409374/ https://lwn.net/Articles/409374/ nix <div class="FormattedComment"> glibc can do it *better* than Solaris, as the GNU linkers have default symbol versions, which Solaris does not (or didn't last I checked, but that was way back in the Solaris 9 days, maybe they added it in 10 or OpenSolaris?)<br> <p> </div> Sat, 09 Oct 2010 22:14:58 +0000 OT: dependency and ABI mismanagement https://lwn.net/Articles/408974/ https://lwn.net/Articles/408974/ jamesh <div class="FormattedComment"> My point about applications was when they make use of multiple libraries providing GTK widgets.<br> <p> Since this thread started on evolution-data-server, consider an application using one of the widgets from the libedataserverui library. If GTK broke the ABI of GtkWidget, you would need a new version of the libedataserverui widgets to use with the new GtkWidget ABI. If that was not available, then your app would need to use the old GTK ABI.<br> <p> As I said previously these sort of ABI breakages are quite painful, so effort is made to avoid them. For GTK itself we've maintained compatibility for 8 years, so it certainly is possible (although is a bit painful at times).<br> <p> Would it be nice if evolution-data-server went through fewer ABI breakages? Sure, but I don't think symbol versioning would solve the problem.<br> </div> Thu, 07 Oct 2010 09:58:19 +0000 OT: dependency and ABI mismanagement https://lwn.net/Articles/408899/ https://lwn.net/Articles/408899/ paulj <div class="FormattedComment"> For that kind of wide-ranging change, I agree it might be classed as one of the "few legit reasons to break compatibility". Though, you could take the approach of making a new library; compiling old and new separately; then combining 2 objects for each library into one appropriately symboled one (I think you might have to write your own ELF tool to remap the symbols of one library though, if such doesn't already exist).<br> <p> However, you're mistaken that the applications must be updated. You can retain *source* compatibility even if binary compatibility is broken in some way. I.e. you're assuming the old GtkWidget definition retains that name and the new one gets a new name. However, you can also rename the _old_ definition (GtkWidgetOld or GtkWidget2_2) and have the new definition use the well-known source-level name, presuming it is still source compatible. With linker maps you can direct old apps (compiled with the old GtkWidget definition, i.e. GtkWidgetOld when it was still called GtkWidget) to functions that expect GtkWidgetOld. There is no requirement at all that the name of the structure be the same in the caller and the function, it's not part of the ABI.<br> <p> Solaris made heavy use of this kind of stuff to preserve runtime compatibility even as data types could be changed incompatibly without changing source-level name (be it changed by default, or changed in the presence of whatever feature selection defines). Glibc probably does too.<br> <p> </div> Wed, 06 Oct 2010 19:32:24 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408792/ https://lwn.net/Articles/408792/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; This is not the same.</font><br> <p> Please elaborate?<br> <p> <font class="QuotedText">&gt; You could also argue any random network protocol is documented because one can use network analysis tools on it to find its innards.</font><br> <p> No, this is not the same :-)<br> <p> You are not doing any kind of justice to DependencyFinder with this poor analogy. Unlike DependencyFinger, a network analysis tool:<br> - requires you to run the software<br> - will provide very incomplete "documentation"<br> <p> I think I might guess what your point is but please elaborate better.<br> <p> </div> Wed, 06 Oct 2010 09:33:03 +0000 OT: dependency and ABI mismanagement https://lwn.net/Articles/408789/ https://lwn.net/Articles/408789/ jamesh <div class="FormattedComment"> While providing two versions of the function is certainly possible, I think you are misjudging the effort to do so.<br> <p> Using GTK as an example, if we made an incompatible change to the GtkWidget structure, there are 179 gtk_widget_* symbols that we'd need two versions for.<br> <p> Now every widget in the library (and every library built on top of GTK) embeds the GtkWidget structure, so we would need two versions in order to support both the old and new API. There is more than 3800 symbols in GTK alone, so this is not a small job. If my application uses any libraries built on top of GTK, they will need to be updated in a similar way to support the new GtkWidget data type if I am to use the new version of the API.<br> <p> Granted the problems are smaller if the incompatible change is made further down the class hierarchy, but I hope this explains why symbol versioning isn't the first tool developers reach for in these cases.<br> </div> Wed, 06 Oct 2010 09:31:33 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408714/ https://lwn.net/Articles/408714/ nix <div class="FormattedComment"> An example with a missing bracket so it doesn't compile ;P<br> <p> </div> Tue, 05 Oct 2010 22:18:58 +0000 OT: dependency and ABI mismanagement https://lwn.net/Articles/408705/ https://lwn.net/Articles/408705/ nix <div class="FormattedComment"> Another exception: projects where ABI breaks would be hell to fix, and where everyone knows that. (e.g. glibc.)<br> <p> I suspect the X libraries don't use it because *introducing* symbol versioning would itself break the ABI, and the current ABI of libX11 et al predates symbol versioning by years.<br> <p> </div> Tue, 05 Oct 2010 22:00:45 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408331/ https://lwn.net/Articles/408331/ nix <div class="FormattedComment"> Well, when libraries gain new facilities, those facilities have to be used by something or they might as well not be there. So even if everything is backward-compatible, you have to version the libraries to indicate the addition of new facilities, *and* you have to version the applications to indicate that they require a library with those new facilities. Giving both the same version number and releasing them simultaneously seems like a not-too-confusing-to-users way to do that.<br> </div> Mon, 04 Oct 2010 11:30:11 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408294/ https://lwn.net/Articles/408294/ HelloWorld <blockquote>You asked for arguments, so here's one. You're "stupid" example is inefficient, yes. But it's also buggy. Consider what would happen if there were two even numbers in a row.</blockquote> That's actually a good point, that wouldn't have happened with an iterator. <blockquote>And that's a good reason to use commonly used libraries for these kinds of things, of course. I'm sure you know that, but you don't appear to be a Java developer, so I wouldn't expect you to know what those libraries are. The parent post mentioned Apache Commons. That would work, but their Collections framework doesn't do generics. These days Guava would be used.</blockquote> This kind of stuff makes sense in theory, but as I pointed out elsewhere in this thread, the Java language makes this kind of stuff <u>way</u> too hard and verbose. Programmers will just continue writing loops as long as it stays that way (It works perfectly well in more expressive languages though). Perhaps Java 8 will remedy this situation. Mon, 04 Oct 2010 01:13:41 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408288/ https://lwn.net/Articles/408288/ sbishop <p>You asked for arguments, so here's one. You're "stupid" example is inefficient, yes. But it's also buggy. Consider what would happen if there were two even numbers in a row.</p> <p>And that's a good reason to use commonly used libraries for these kinds of things, of course. I'm sure you know that, but you don't appear to be a Java developer, so I wouldn't expect you to know what those libraries are. The parent post mentioned Apache Commons. That would <a href="http://commons.apache.org/collections/api-2.1.1/org/apache/commons/collections/Predicate.html">work</a>, but their Collections framework doesn't do generics. These days <a href="http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Predicate.html">Guava</a> would be used.</p> Mon, 04 Oct 2010 00:18:42 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408235/ https://lwn.net/Articles/408235/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; which makes it so verbose that it's pointless.</font><br> <p> You really have no idea how much money boilerplate code can make.<br> <p> </div> Sun, 03 Oct 2010 10:20:04 +0000 If someone don't want to believe something then he'll not believe something https://lwn.net/Articles/408229/ https://lwn.net/Articles/408229/ khim <blockquote><font class="QuotedText">You'll have to give reasons for this if you want anybody to believe this who doesn't already.</font></blockquote> <p>Sorry, but no. You can not disprove honest belief so easily: that's why we hava Judaism, Christianity, Islam, Buddhism, etc. I've already said why Java is "better": instead of small number of constructs which can be combined in many ways you have lots and lots of stuff which can be combined in limited way. This is easier to use if you try to randomly connect things and see what will finally work.</p> <blockquote><font class="QuotedText">Those developers shouldn't have been hired in the first place. After all, this is what the probation time is good for: keeping lunkheads out of your team.</font></blockquote> <p>Welcome to real world. Yes, probation time helps, but not absolutely: if you reject candidates one after another then HR department will eventually decide that it's better to fire <b>you</b> (citing unaccommodating as reason) rather then tolerate problems you cause (they lose bonuses if you reject lunkheads, you know).</p> <p>So in the end only absolutely hopeless imbeciles are fired. Everyone else stays and you must accommodate them somehow. Especially if they have good recommendations and finished prestigious universities.</p> <blockquote><font class="QuotedText">This is like letting a would-be carpenter use a hand saw instead of a power saw since he might cut his fingers off instead of telling him that he's simply not the right person for the job.</font></blockquote> <p>Yes and no. It's more like giving him power saw but only asking him to produce identical straight planks - and this is exactly what happens in real life. If you take a look on what is in stores then you'll see that work of genuine carpenters-designers are rare and expensive. Most furniture are mass-produced using the same design for thousands of items. Why? It's easy: it's cheaper this way. People who can design exist, often they can even use power saw, but they are rare and expensive. So furniture production is optimized for lunkheads: they know how to operate power saw or even more complex equipment, but they don't know how to design things and how to cope with timber blemishes (unless they've gotten explicit instructions). So other people (designers) are doing all planning work and low-lever people are just following the rules.</p> <p>Java world is designed for just such a use. And the main ingredients are not even language capabilities but IDE capabilities - but they are enabled by language capabilities. I've conducted hundred of interviews and "Java developers" are worst bunch: often they can not even write simple programs like you've shown above without help of IDE! And they will happily write O(N^2) solution you've presented - if it'll work then Ok, if it'll not work - some higher level person will speedup the thing by factor ten and will get separate bonuses for that work.</p> <p>Business world is not about good code. It's about strict adherence to specifications - and Java helps immensely here.</p> Sun, 03 Oct 2010 09:07:52 +0000 That's true, but you don't have a choice. https://lwn.net/Articles/408200/ https://lwn.net/Articles/408200/ HelloWorld <blockquote>Yes - and it means most "business programs" are horrible. But with Java they work. With other, less restricting languages, they don't.</blockquote> You'll have to give reasons for this if you want anybody to believe this who doesn't already. <blockquote>The problem here is the fact that it's usually very hard to fire bad developer from "big business" so they must be used somehow - and Java is the best language for that.</blockquote> Those developers shouldn't have been hired in the first place. After all, this is what the probation time is good for: keeping lunkheads out of your team. Instead, you're even trying to accommodate those lunkheads. This is like letting a would-be carpenter use a hand saw instead of a power saw since he might cut his fingers off instead of telling him that he's simply not the right person for the job. Sun, 03 Oct 2010 01:23:23 +0000 That's true, but you don't have a choice. https://lwn.net/Articles/408197/ https://lwn.net/Articles/408197/ khim <blockquote><font class="QuotedText">You could say that smart people could figure out the design and let grunt programmers implement it. But I don't think that works well in practice. The devil is in the details, and for a bad programmer, it's easy to write a horrible program from a design he didn't really understand.</font></blockquote> <p>Yes - and it means most "business programs" are horrible. But with Java they work. With other, less restricting languages, they don't. The problem here is the fact that it's usually very hard to fire bad developer from "big business" so they must be used somehow - and Java is the best language for that. C# is not because it's nicer language and actually includes many higher-level features!</p> Sat, 02 Oct 2010 22:50:06 +0000 Sorry, but this is NOT Turing-complete VM https://lwn.net/Articles/408196/ https://lwn.net/Articles/408196/ khim <p>For Turing-completeness you need some kind of ENDLESS memory. It may be tape (as in Turing or Post machines), memory (well, most CPUs have finite memory so they are fully not Turing-complete - yet 2^64 is usually "good enough") or just a few counters (three is enough - but they must be unbound!).</p> <p>DVD VM has very limited memory so it's not Turing-complete...</p> Sat, 02 Oct 2010 22:35:46 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408157/ https://lwn.net/Articles/408157/ marcH <div class="FormattedComment"> Sorry if you felt "trolled" but I actually never meant to discuss this *at all*. I just meant to briefly share a number of converging experiences, and such a forum is the appropriate place for that. Formally demonstrating the conclusions of these experiences with hard facts is not possible in such a forum, anything serious would require an entire book. We all understood that your experience differs, thanks.<br> <p> </div> Sat, 02 Oct 2010 15:12:38 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408034/ https://lwn.net/Articles/408034/ HelloWorld <div class="FormattedComment"> And how does Java help with all that? Does Java magically create good database designs? I don't think so. And it probably won't magically make your program scalable and all that. So what it boils down to is that to make fast software, you need smart developers. <br> <p> You could say that smart people could figure out the design and let grunt programmers implement it. But I don't think that works well in practice. The devil is in the details, and for a bad programmer, it's easy to write a horrible program from a design he didn't really understand. <br> </div> Fri, 01 Oct 2010 14:55:06 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408006/ https://lwn.net/Articles/408006/ HelloWorld <blockquote>IMO, both are not good. Iterator.remove() should be used.</blockquote> Please, if you make such statements, provide arguments for them. Otherwise, it's just a waste of time for both of us. Also, as far as I can see, there is no analogon to the removeRange method that takes iterators instead of indices. <blockquote>Or, if there is such a utility function in Apache commons, it should be used.</blockquote> I don't think there is. It's basically impossible to abstract this kind of things in Java enough to make it useful. A method that removes even numbers from a list isn't really that useful, since one day you may want to remove odd numbers or primes or negatives or whatever. So what you need to do is pass a small chunk of code that determines whether an element will be removed. The best Java will give you is an anonymous inner class, which makes it so verbose that it's pointless. <pre>filter(new Predicate&lt;Integer>() { public boolean doIt(Integer i) { return i % 2 == 0; } }, someArrayList);</pre> Fri, 01 Oct 2010 14:11:43 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/408008/ https://lwn.net/Articles/408008/ HelloWorld This discussion is going nowhere. Making claims and not providing any arguments has a name. It's called trolling. Fri, 01 Oct 2010 11:38:01 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407999/ https://lwn.net/Articles/407999/ HelloWorld <div class="FormattedComment"> Given that this is a discussion about poor developers writing poor code in Java, an example in Java seemed fit. <br> <p> Anyway, if you want an example in a functional language, here is how you'd do it in Haskell:<br> <p> removeEvenNumbers = filter odd<br> <p> </div> Fri, 01 Oct 2010 11:19:41 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407994/ https://lwn.net/Articles/407994/ marcH <div class="FormattedComment"> Without really looking at your example in detail, I like the fact that you first show off with some functional-speak, and then demonstrate an example with for loops.<br> </div> Fri, 01 Oct 2010 10:29:20 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407991/ https://lwn.net/Articles/407991/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; Oh by the way, you still haven't told why you think that Java makes stupid things harder.</font><br> <p> Yes I left this as an exercise (hint: cheat and use the Internet).<br> <p> </div> Fri, 01 Oct 2010 10:22:38 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407954/ https://lwn.net/Articles/407954/ jschrod <div class="FormattedComment"> <font class="QuotedText">&gt; See above for a trivial O(n^2) algorithm that is being written all the time.</font><br> <p> See my answer there.<br> <p> <font class="QuotedText">&gt; Also, if the problem size is small anyway, why worry about performance at</font><br> <font class="QuotedText">&gt; all and not just write the stuff in some other, more productive language?</font><br> <p> First of all, a large problem size does by no means equate with complex algorithms. E.g., in a current project of us, phone events of 40,000,000 customers must be rated and billed. Processing each event is simple, no algorithmic complexity at all. The challenge is an architectural design that supports or even furthers horizontal scalibity, i.e., the ability to distribute the processing over many servers.<br> <p> Second, in business applications performance issues are more often caused by bad interface decisions, I/O problems, and bad database designs than by algorithms. Business applications are not about computing, they are about moving data from A to B.<br> <p> As I wrote, complexity and challenges for business applications are found in the requirement and design phases, not in the programming phases. Actually, also in the testing phase if one goes beyond module unit tests and tests if a system really delivers the functionality and serviceability the customer *needs* (that's most of the time not the same he's ordered).<br> <p> Third, I have yet to meet a non-toy project -- let's say 50+ people working on it -- where one is allowed to select its implementation language on purely technical grounds. I hope I don't have to spell out all the reasons for that. In the real world, implementation language(s) selection is as much a management and political decision as it is a technical decision, for better and worse.<br> </div> Fri, 01 Oct 2010 07:14:54 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407951/ https://lwn.net/Articles/407951/ jschrod <div class="FormattedComment"> IMO, both are not good. Iterator.remove() should be used.<br> Or, if there is such a utility function in Apache commons, it should be used.<br> </div> Fri, 01 Oct 2010 07:00:46 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407850/ https://lwn.net/Articles/407850/ HelloWorld <div class="FormattedComment"> Oh by the way, you still haven't told why you think that Java makes stupid things harder. I think you're underestimating the dumb developers' imagination when it comes to doing dumb things. <br> </div> Thu, 30 Sep 2010 19:15:37 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407849/ https://lwn.net/Articles/407849/ HelloWorld <div class="FormattedComment"> See above for a trivial O(n^2) algorithm that is being written all the time. <br> <p> Also, if the problem size is small anyway, why worry about performance at all and not just write the stuff in some other, more productive language? <br> </div> Thu, 30 Sep 2010 18:54:07 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407835/ https://lwn.net/Articles/407835/ HelloWorld Algorithms are being written all the time. It's about trivial stuff like removing even numbers from a list. Don't tell me this doesn't happen in the real world, _especially_ when dumb programmers (who don't know about higher-order functions like filter) and dumb languages (like Java, which also doesn't know about higher-order functions) are involved. <p> A dumb programmer would do this: <pre> void removeEvenNumbers(ArrayList&lt;Integer> l) { for(int i = 0; i < l.size(); ++i) if (l.get(i) % 2 == 0) l.remove(i); } </pre> A smart one would do this: <pre> void removeEvenNumbers(ArrayList&lt;Integer> l) { int j = 0; for(int i = 0; i < l.size(); ++i) if (l.get(i) % 2 != 0) l.set(j++, l.get(i)) l.removeRange(j, l.size() } </pre> Now please don't tell me that this kind of stuff isn't done in the real world. Thu, 30 Sep 2010 18:51:58 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407768/ https://lwn.net/Articles/407768/ jackb <div class="FormattedComment"> It wants to be able to auto-update itself.<br> </div> Thu, 30 Sep 2010 15:25:28 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407765/ https://lwn.net/Articles/407765/ rwmj <div class="FormattedComment"> "write access to its own executable". WTF? What on earth for???<br> </div> Thu, 30 Sep 2010 15:15:40 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407763/ https://lwn.net/Articles/407763/ BenHutchings <div class="FormattedComment"> DVD menus are also controlled by a program running on a virtual machine. The VM is Turing-complete but is limited to 128 instructions per menu, 16 16-bit general-purpose registers and no memory.<br> <p> </div> Thu, 30 Sep 2010 15:09:23 +0000 Carrez: The real problem with Linux distros https://lwn.net/Articles/407734/ https://lwn.net/Articles/407734/ nim-nim <div class="FormattedComment"> Why should I take that personally ?<br> I described a mode of development I don't agree with (piling up components with random versions and minimal code tracking and then using many testers to try identify the exposed bugs and fix them before the customer notices).<br> <p> And if you don't think that's how most big Java projects are "qualified", you've never looked below the shiny presentation veneer. They rely heavily on brute-force testing (either cheap testers or the same simulated via loadrunner and friends). That works to limit the number of obvious problems (and customer complains) on the exact configuration tested. But that's never been a good way to validate a design is solid enough to withstand the test of time, and can evolve later when requirements change. As soon as the environment changes, even minimally, everything needs to be redone (write once, run once, not everywhere)<br> <p> <p> </div> Thu, 30 Sep 2010 13:53:04 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407702/ https://lwn.net/Articles/407702/ jschrod <div class="FormattedComment"> In the Real World(tm), a.k.a. business programs, programmers don't have the chance to select between an O(n^2) and an O(n) algorithm[*], they use libraries and frameworks that supply such algorithms.<br> <p> Obviously you don't develop in a business context. There, the interesting parts of software development are in the requirement, architectural, and testing parts of a project, not in any algorithm designs which are 99.999% of the time *VERY* boring, being `get data, change some attribute, move it somewhere else, finished'.<br> <p> [*] Being pedantic, there are few algorithms anyhow, where one *could* make such a choice -- most of the time, it's O(n^2) vs. O(n \log n). Equally well, it often doesn't matter at all, because the factors that O-notation abstracts away, and also $n$ that needs to be handled are too small anyhow. There's a reason why DEK does full analysis in his books, and not just O notation.<br> </div> Thu, 30 Sep 2010 10:38:03 +0000 Carrez: The real problem with Linux distros https://lwn.net/Articles/407699/ https://lwn.net/Articles/407699/ jschrod <div class="FormattedComment"> <font class="QuotedText">&gt; Testing is prohibitively expensive but it also does not require very</font><br> <font class="QuotedText">&gt; qualified people.</font><br> <p> Don't take that personally, but I hope I won't have to use a product where you were responsible for test resources' allocation.<br> <p> With a perhaps better understood analogy, your statement reads like the same mindset as `UI design changes don't require very qualified people, everybody can change some dialogs.'. *shudder*...<br> </div> Thu, 30 Sep 2010 09:49:54 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407697/ https://lwn.net/Articles/407697/ jschrod <div class="FormattedComment"> NB: AFAIR, current SUSE Linux has no roots in Slackware. While S.u.S.E. GmbH originally distributed German translations of Slackware, base of their own distribution was Jurix from Florian. This was 4.2, in 1996 or so, and was my 1st SUSE installation. (I used original Slackware before.)<br> </div> Thu, 30 Sep 2010 09:41:39 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407691/ https://lwn.net/Articles/407691/ nim-nim <div class="FormattedComment"> <font class="QuotedText">&gt;&gt; With the java way a user of 100 java apps will have 100 versions</font><br> <p> <font class="QuotedText">&gt; But every one of those 100 apps probably works with respect to the</font><br> <font class="QuotedText">&gt; features that the app developer tested. Nobody else has gone in and</font><br> <font class="QuotedText">&gt; changed something and screwed it up.</font><br> <p> And what happens when the app needs to be updated to add new customer-requested features? It can't because the local fork of Java deps is missing the features that were added in the real upstream version. So everything needs to be re-done.<br> <p> The Java way does not solve anything it just delays the payback (That's one reason big Java apps cost astronomical prices, and have slow release cycles. The language is nice and should enable cheaper/faster development, but the abysmal release practices add up in multiple ways in the long term)<br> </div> Thu, 30 Sep 2010 09:15:16 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407689/ https://lwn.net/Articles/407689/ nim-nim <div class="FormattedComment"> This is not the same.<br> <p> You could also argue any random network protocol is documented because one can use network analysis tools on it to find its innards.<br> </div> Thu, 30 Sep 2010 09:04:00 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407671/ https://lwn.net/Articles/407671/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; (Why do I even have to explain this?)</font><br> <p> Because writing "enterprise" software, of which you apparently know little (lucky you), is almost not about algorithms but mainly about large amounts of boring boilerplate code for persistence, serialization and user interfaces. Have a look at what J2EE is (now JEE).<br> <p> In the real world, grunts do not get to spend time reading Knuth and carefully select algorithms.<br> <p> </div> Thu, 30 Sep 2010 06:24:46 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407642/ https://lwn.net/Articles/407642/ HelloWorld <div class="FormattedComment"> Writing fast software requires some understanding of smart datastructures, algorithms, complexity theory etc., and poor developers generally don't have that kind of understanding. Since to my knowledge Java can't magically turn an O(n^2) algorithm into a O(n) one, Java programs written by poor developers will perform poorly. <br> <p> (Why do I even have to explain this?)<br> </div> Wed, 29 Sep 2010 22:07:13 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407637/ https://lwn.net/Articles/407637/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; AFAIK, java doesn't support any sane dependency extraction, without which it is more difficult to provide good runtime dependencies.</font><br> <p> <a href="http://depfind.sourceforge.net/">http://depfind.sourceforge.net/</a><br> Not good enough?<br> <p> </div> Wed, 29 Sep 2010 21:33:56 +0000 Carrez: The real problem with Java in Linux distros https://lwn.net/Articles/407634/ https://lwn.net/Articles/407634/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; It's easy to make such bold statements.</font><br> <p> It is easy but only after years of experience.<br> <p> <font class="QuotedText">&gt; And given the complete lack of rational arguments, it's just as easy not to believe them.</font><br> <p> Granted.<br> <p> Note: for an equally bold, but much more simplistic statement see the grand-grand-parent post.<br> <p> </div> Wed, 29 Sep 2010 21:20:06 +0000