9 ms·
I would say Java the language is fine, but the culture around it is what's grown the distaste many have for it. The overuse of design patterns, etc. I also fin
by VHRanger 5y ago
I would say Java the language is fine, but the culture around it is what's grown the distaste many have for it. The overuse of design patterns, etc.
I also find it fun how Guy Steele had in retrospect the perfect plan for Java back in the 1990s, and it took them 15 years to come around to it:
https://www.youtube.com/watch?v=_ahvzDzKdB0 https://www.youtube.com/watch?v=_ahvzDzKdB0
- PaulHoule 5y agoIf Common LISP had become popular I think there would be a popular distaste for everything about it and people would be wishing they could write code in PHP, Visual Basic, COBOL, Cold Fusion, etc. (There was a popular distaste for Common LISP at the time, it was hard to find a LISPer in the 1980s who liked it. Half of that was it was hard to fit it into a 16-bit machine and wouldn't become really implementable on microcomputers until a 32-bit OS was available... Thus BASIC got another decade of life extension.) Until Java came around every book on Object Oriented programming (say "C++") had examples such as "Stack", "Queue", etc. In the case of Java you saw people starting to write objects mirroring the business and application domains. People who were trying to use objects in Smalltalk or C++ in 1990 just weren't accomplishing enough that somebody could step back and say "object orientation sucks", rather they were getting stuck and blaming themselves or blaming the tools, rather than the concept.
- thomascgalvin 5y ago> The overuse of design patterns, etc. Java has been trending away from this for some time now. A modern Spring app looks nothing like an old J2EE app.
- dagw 5y agoA lot of us jumped off the Java train in disgust at the height of the J2EE craze and never looked back, so fairly or unfairly we'll forever be judging everything Java by that tainted memory.
- pjmlp 5y agoA framework originally designed for Objective-C, actually.
- tombert 5y agoWait, is that true? I know WebObjects was designed around ObjC, but a quick ten seconds on Wikipedia doesn't indicate that J2EE was designed around ObjC initially. ---- Unnecessary opinion: I don't like either, but WebObjects sucks about 1/10th as much as J2EE.
- pjmlp 5y agoYou should have spent more than ten seconds. > By the time DOE, now known as NEO, was released in 1995, Sun had already moved on to Java as their next big thing. Java was now the GUI of choice for client-side applications, and Sun's OpenStep plans were quietly dropped (see Lighthouse Design). NEO was re-positioned as a Java system with the introduction of the "Joe" framework, but it saw little use. Components of NEO and Joe were eventually subsumed into Enterprise JavaBeans. Taken from https://en.wikipedia.org/wiki/Distributed_Objects_Everywhere https://en.wikipedia.org/wiki/Distributed_Objects_Everywhere
- tombert 5y agoAh, I was just quickly reading on the J2EE wikipedia entry and didn't see "Objective" anywhere on there. You're absolutely right, thank you for clarifying!
- pjmlp 5y agoNo issues, and here is another one, while Java might have a C++ like syntax to make it more appealing to mainstream, its main influence was Objective-C, not C++. https://cs.gmu.edu/~sean/stuff/java-objc.html https://cs.gmu.edu/~sean/stuff/java-objc.html Hence interfaces, dynamic loading, reflection and so forth.
- fsdjkflsjfsoij 5y agoModern Spring Boot is still incredibly bloated and full of questionable design patterns. A simple web application should not consume hundreds of megabytes of RAM by default and startup time on modern hardware should be basically instantaneous. Classpath scanning and annotations are still massively overused and most of the time they're accomplishing little more than obfuscation and turning compile time errors into runtime errors.
- kaba0 5y agoWhy exactly? How often do you start up a web application? And it’s not like the RAM is not there to use it — thread pools, db connection pools, etc have to be set up.
- alexjplant 5y ago> I would say Java the language is fine, When I was using it I didn't particularly mind it except for the clumsy handling of functions (i.e. as objects instead of first-class citizens) and verbosity (no automatic accessors, implicit typing, etc). Adding Lombok solved most of these. *EDIT: Except for runtime type erasure of generics which caused (not sure about new Java) performance issues and made certain type operations difficult. > but the culture around it is what's grown the distaste many have for it. Having to debug esoteric issues with classpath, Spring, CDI, JPA, Aspect4j, etc. is hell on earth. I've lived that life and have no desire to do so again. Because Java is the lingua franca of enterprise development it also tends to rear its ugly head on modernization projects and rewrites. 80% of the abhorrently-engineered codebases I've encountered in my career were written in Java by body shops (C# and Coldfusion were the runners up). > The overuse of design patterns, etc. I'm not an adherent of the design pattern cargo cult but I'm one of four people under the age of 50 that have actually read the GoF book and I do indeed sometimes name objects after patterns described in the book; I typically design components and name them such after the fact as opposed to constructing systems from the ground up using design patterns. Calling a thing that persists comments in a database `CommentRepository` is a lot more useful than calling it `CommentHelper`.
- pjmlp 5y agoTry doing the same with CORBA and DCOM.
- stickfigure 5y ago> Having to debug esoteric issues with classpath, Spring, CDI, JPA, Aspect4j, etc. is hell on earth. The term "DLL Hell" came from Windows development before it. The Node/Ruby/Python equivalent is getting native libraries to build (node-gyp, I'm looking at you!). I've burned days in Ruby Version Hell and Node Version Hell. Javascript dependency upgrades are a nightmare compared to Java dependency upgrades. I don't think this problem has gone away, or even improved. It's just a grim fact of life, and Java doesn't deserve special mention.
- alexjplant 5y agoThe things you mention are no fun either (`node-gyp` in particular), but the Java issues I encountered were far beyond run-of-the-mill runtime linking and interop issues you describe. The details are lost to time and a bit fuzzy but I recall the primary issue being competing CDI implementations stepping on each other when we tried to use JSF with a recent version of Spring... and because most everything in the Java ecosystem was doing some opaque Aspect4J magic it was nigh-impossible to debug.
- pjmlp 5y agoI see this repeated all the time. What people fail to realize is that the enterprise culture is language agnostic. Before Java we were doing the same with C, C++, VB, Delphi, Smalltalk and whatever 4GLs one wants to dive into. When Java gets replaced by TechX, the space ship enterprise architects will keep doing what they know best in TechX.
- txru 5y agoSince that's an hour-long video, what do you consider the most salient points of his plan for Java that it ended up embodying eventually?
- VHRanger 5y agoAbout user-grown features. Over time, Java let users expose more lower level details to the language than before. But, really, watch the talk. It's one of the best conference talks in computer science history.
- itronitron 5y agoJust like any other language, in order to use Java well you have to ignore a lot of the hyped up techniques.
- smallhands 5y agoit is painful watching this video . presentation software and projectors are truly blessing
- smrtinsert 5y agoOveruse of design patterns seems like decades ago.
- polotics 5y agoSadly it is not: they still get taught, and then juniors come and they expert-beginner projects to death. And yes in 2022 expert-beginner is a verb! Cheers