6 ms·
Java the language is cool. What the enterprise has done with it is not cool. Writing apps with layer upon layer upon layer upon layer of abstraction is ... sel
by chooseaname 8y ago
Java the language is cool. What the enterprise has done with it is not cool. Writing apps with layer upon layer upon layer upon layer of abstraction is ... self defeating. Then they'll holler, we need to rewrite it! All in the name of finding that one true architecture that can handle any business CR. Blech.
- dajohnson89 8y agoHow do you feel about Spring? I'm a fan of Java itself as well, but find myself conflicted whenever I use Spring/Boot. It's very nice when it works. But when the magic formula isn't recited correctly....you get frustrated and wind up visiting HN to forget about how unpleasant it is. ahem
- jimbokun 8y agoSpring is obsessed with using anything but actual Java code to express business logic in Java programs. XML bean configuration files. Annotations. Implicit code generation. Property and YAML files. Looking for files and resources in "default" locations. Executing code at runtime as the result of adding a dependency, without it ever being explicitly called anywhere. The result is, you can never really predict what the hell your program is going to do when its running in production. Certainly not by carefully reading and inspecting the Java code you write.
- pjmlp 8y agoI think that it brought a good competition against JEE (back when it was still J2EE), however I would still just use JEE for Java Web projects.
- dajohnson89 8y agoJust curious -- why?
- pjmlp 8y agoShort answer, experience and employers. My experience doing Web development in Java started with joining a team that was ramping up a project on WebSphere 5.1, alongside a migration from BEA WebLogic. I went through a couple of WebSphere, JBoss and TomcatEE versions up to JEE 6, was the technical lead for an in-house JSF framework built on top of RichFaces, and on very last JEE project used PrimeFaces. All the employers that I worked for, mostly used JEE stacks for their Java projects. Spring was the exception, rather than the norm. Additionally, even if a bit slowly, many of the Spring improvements ended up in JEE and Spring also supports the JSR related to JEE anyway. Nowadays I live in the .NET world, and the Java teams next door are happily delivering JEE based solutions. So if I was suddenly asked to architect a Java based solution, naturally it would be JEE based.
- mattnewport 8y agoJava made some fundamental design decisions at its inception which look like fairly bad ones from today's perspective. It also introduced flawed versions of features like generics later. It also has some pretty poorly designed core libraries. What about it do you consider cool? I find it hard to think of anything I'd want to take from Java if designing a new language today. Even its bad design decisions have mostly been done better by other later languages like C#.
- codesushi42 8y agoGenuinely curious, which language do you find is better designed?
- mattnewport 8y agoMost of them to be honest :) Some languages do at least one thing particularly well, setting the standard in that regard. Some introduce or popularize new concepts that slowly see adoption elsewhere. Several make you think about programming in a different way. Some just have an overall elegance, unity, consistency or simplicity of design that make the whole greater than the sum of the parts. Languages that check at least one of those boxes for me include C, C++, Lisp, F#, Haskell, Lua, Python, Elm, APL, SQL, ISPC and Rust (I don't claim to be an expert in all or even most of those languages). Other languages that seem interesting / different but I know almost nothing about include Erlang, Clojure, Smalltalk, Prolog, Forth, Coq, Idris and Kotlin. By contrast I've not really seen anything in Java that checks any of those boxes and isn't done better elsewhere (admittedly sometimes by languages that came later like C#).
- barrkel 8y agoJava popularised GC. GC wasn't taken seriously as an option for high performance code before Java, and it altered the mindset of the majority of programmers globally. Java's biggest mistake IMO is checked exceptions. Java is more notable for the things it left out than what it added. It was designed for success and achieved more than most of the languages you list. I don't love Java. However there are many cases in which it's still the best option.
- aphextron 8y ago>What the enterprise has done with it is not cool. Writing apps with layer upon layer upon layer upon layer of abstraction is ... self defeating. Then they'll holler, we need to rewrite it! All in the name of finding that one true architecture that can handle any business CR. Blech. Those decisions were less to do with personal freedom or program simplicity, and more to do with the realities of large scale enterprise development. You end up having to adopt patterns that make individual programmers replaceable, and allow for a standardized pool of candidates with experience in $X framework. The reality is that most companies building Java software just need to be able to hire an average Java programmer to show up every day and manage their huge tangle of business logic.
- pjmlp 8y ago> Java the language is cool. What the enterprise has done with it is not cool This is a re-occuring pattern. I have seen it happen with C, C++, TP, Clipper, Java, JavaScript, C#, VB, ... The enterprise environment is quite "interesting", specially when politcs get intermixed with technology.