I dealt with these languages on a daily basis and I must admit, I wouldn't want to deal with them in the future. Nothing has robbed me of sleep quite like they have... π€π ββοΈ
I dealt with these languages on a daily basis and I must admit, I wouldn't want to deal with them in the future. Nothing has robbed me of sleep quite like they have... π€π ββοΈ
For further actions, you may consider blocking this person and/or reporting abuse
Java itself is one of the most important languages ever, the people who did it were right about many of the big things.
See this tribute to Java by the designer of a language meant to replace it
elizarov.medium.com/a-tribute-to-j...
What you need to hate are the Enterprise Supposedly Best Practices that were handed down by J2EE, Struts & other coding horrors.
Lesson learned: never accept "Best Practices" at face value.
Let me grab a beer and watch you code in COBOL π
I started as a Java developer.
Java the language itself is fine.
Its very verbose (similar how Svelte developers feel about React).
The Ecosystem/Culture around it is the main problem.
Where are so much "have to do" best practices and entrenched indoctrination, that you lose any resemblance of joy.
The Spring Framework (most used framework in the java ecosystem/industry) that makes you feel like an idiot, because its 100x more complex than java itself does not help as well. Being a Framework it has its own APIs for everything without any IDE features or autocompletion -> so you have to basically have to remember everything.
Its just easier to learn a completely new language (rust, go, scala,javascript/typescript) and its ecosystem and switch the company and the job
than to fight against hardened, outdated beliefs of how everything should be done (mostly about 10 years ago outdated knowledge).
Modern Java is STILL very verbose in comparison to other languages.
Take one look at a Collector API and say, with a straight face, that this is the most easy/minimal way of grouping things.
docs.oracle.com/javase/8/docs/api/...
You migrated to other functional frameworks -> I migrated to Scala. To this day I think Scala provides the best possible developer experience for backend devs.
I remember then at the company I worked for: we had the choice between Angular 2 or React, because angularjs version 1 was deprecated and no code between v1 and angular v2 could be reused and had to be completely rewritten from scratch.
Java developers looked at React, noticed that HTML and Javascript is bundled together in JSX
and have gone on a holy crusade against this heresy, breaking some abstract design patterns like "separating of concerns", etc.
I don't have extensive knowledge with it, but one thing is sure: whenever I have to work with Java the following things are going to happen:
.bashprofile
through an obscure command that everyone else copies from each other../dist
or./build
? Nah!./android/build
? Nah! It's./android/app/build/outputs/release
and not./android/app/build/generated
.Overall your complains are about you reluctance to learn rather than about language. Actually nothing of the above is about language, just specific setups and projects.
One more thought to my original comment: what I had was feedback. The language and resources around it won't improve themselves if you are simply told your feedback is wrong. For a serious developer every 5th year I recommend trying out professionally some other languages - though realistically we are mostly chronically overworked to do so. But by pure chance, I had to move from C# to JS, from JS to TS. There was half a year when I worked with python and Snowflake. Back then as a green boy I started working with PHP.
All of them had advantages/disadvantages to the other.
You can't beat the JS world with setup. You download node/deno/bun and it just works. No BS. You start your application, no noise of 600 lines of logs, it starts immediately, very clean.
On the other hand basic language features, like import/export, which most other languages ship with on day 1, is still an on-going battle. Feels like that what the C# ecosystem was able to do in the 2010s we are still catching up with JS on the 2020s.
Python is a nice language, however I was struggling so much to manage pip/pip3 - sometimes even breaking other apps preinstalled requiring different version of the runtime. It was a bitter hell and a total surprise. Personally, I dislike not having the option to write types, as they are not nuisance only. Types are extremely useful to communicate the input/output of your functions.
I can only recommend trying out other languages with open eyes, exactly the same way you go to another country: if you are just an American tourist who tries to drive through Tokyo in a giant pick up, you will miss many great things, like how effective their mass transportation is, how extremely delicious food you can find in the train station, how the bullet train arrives on time, really, and so on.
For most popular languages, once you mastered one from C-family, getting others is easy but does not add much new knowledge. Non-C-like languages usually add not much more if they are imperative/OO languages. So, for example, learning Python after Java is "meh". Things change if a language is functional or, at least, with a significant functional component. For example, Haskell, Scala or Rust significantly affect the thinking and understanding of the code even for languages one already know for years.
Well, regarding the language, it always felt lagging behind C# many years. If I would have time now to learn a language, definitely I would not spend it on Java, but rather on Rust, Zig or Kotlin (or maybe Swift).
None of these languages are a replacement for Java.
EDIT: Expanded version of response:
P.S. Don't get me wrong, I love Rust and definitely recommend learning it. It just not a replacement for Java for enterprise backend applications.
I agree that Rust and Zig are for different purpose. Regarding Kotlin and Java I have no relevant experience, just a trend that most people working with Java was planning at least to go with Kotlin or something else.
I also noted the omission of C# in your answer. With that language I only have extensive knowledge when it was hard-wired to IIS and Windows. Apart from that disadvantage, the language itself and Visual Studio was a delight to work with; In 2009 you could rewrite a function during debugging(!!!) and then continue execution.
Much of hate for C# in my opinion was Microsoft paranoia and the fact it wasn't "free to use". People pay a lot more for AWS bills, but I guess that's a different budget.
And then return because in real life very few languages can compete with Java regarding ergonomics of the whole ecosystem/tool chain/IDE's/various tooling/etc. And recent updates to the language significantly reduced the incentive to try something other because feature-wise, Java basically caught up with competitors. In some cases, it got features even ahead of them, for example, sealed interfaces in Kotlin appeared after sealed interfaces in Java. I believe that a widespread transition to a more functional style will make Java even more popular than before. And I'm working hard to make it happen.
Yes, I've not mentioned C# for the simple reason of not having enough experience to draw any conclusions about the language itself. But I'm pretty sure that limiting C# and .Net to Windows was a wrong move. Technical superiority is not enough to win developers' hearts.
I do remember doing something like that in the Eclipse sometime around 2005 or 2006. Overall, Java IDEs are superb, even less popular ones like NetBeans.
I am curious about the rest of the rant! Please follow up! Of course I can already guess, but I used to be grateful for Groovy when I worked with a Java-based framework. My most dreaded Java aspect were overly verbose boilerplate code for the most simple things like reading from a file or 20 pages of unhelpful stacktrace for the most trivial errors. But React did a great job to replicate some of Java's problems in JS (and adding all of the problems of scripting languages and hyped ecosystems).
"React did a great job to replicate some of Java's problems in JS" -> React was the rebel kid in town, it introduced JSX (HTML in JS) -> that angered any "separation of concerns" person there is.
Angular follows java practices / modularity much more closely.
Luckely, now every developer does not need to use frondend frameworks to create a website.
They can just use
1) template engines,
2) HTMX, or
3) Astro
Svelte - is currently the most beloved JS framework and 10x-100x easier for beginners to learn than React.
JSX also has a very ugly syntax and makes devs use JS where pure HTML would have been more appropriate. But they even went a step further and introduced CSS-in-JS, abandoning many of the potential advantages of coding proper CSS and using stylelint.
100% agree, but what they can use depends on the requirements! Make a small website? Any static site generator will do. Create a complex web app? What about a classic multi-page application with a server-side backend? I remember getting frustrated trying to use Node Express with TypeScript. Hopefully times have changed. When we need a CMS for non-technical webmasters or a webshop, it gets more complicated. I currently work on a Symfony-based setup with a PHP backend and Vue JS and Twig on the front end. Sounds overengineered but prevents reinventing the wheel for every single use case, especially when working with currencies and taxes.
I have never tried Svelte, Angular, Astro, or HTMX yet. Maybe I need more time.
Svelte, HTMX and Astro are
Its a great time for dev now, we are now spoiled with choice.
Java is the first programming language I learned ...
Between wordiness and rigid structure, I don't know what I hated the most...
It was after released of JVM 8, many things had changed... Hard to find good tuts with the new features on web..
One day, I meet python and since, It is a love story...
Modern Java is concise and expressive. And "rigid" structure is a feature one start deserving much when it is necessary to start working on already existing project.
I do not tested last versions but Python is very good for me, I will not change.
Few errors, flexible, learning easy, better pratice and django as framework for web developpement π
Dynamically typed languages have inherent issues, which make them unusable for large and long-living projects. The need to write many more tests to achieve the same level of defects negatively impacts productivity. And easy learning is a one-time advantage. Especially given that Java is a rather simple language, too.
We don't have same meaning of simple
Java indeed a simple language. But, like any other language out there, one can't just learn the language itself and start writing production code. It is necessary to know numerous ecosystem elements. Even getting briefly familiar with them requires significant efforts.
Why do Java Programmers wear glasses?
Because they don't C#.
π
Why C# programmers joking about Java?
Because they C# that Microsoft lost the battle.
I thought it was a very interesting comment
some historical context
1 late 90's Aus govt/defense threw away 300 million on a failed mega project over the horizon radar project Jindalee Operational Radar Network Project..
2 in review the issue of team collaboration and mega C++ code bases came up as a significant reason for the projects failure
3 Not long after this Java arrived as a solution for these issues, basically a verbose language any idiot(recent comp sci grad) could real like a book, the advantages being team members could read other peoples code and understand it quickly.
If you don't like Java, it could be because you haven't tried the newer versions yet. Java 8 is indeed quite old, and Hibernate can be heavy. However, Java 17 or 21, along with previous versions, have undergone significant changes. I suggest giving Spring Boot 3 and jOOQ a try, along with Java 17. It might change your perspective.
mjga.cc
github.com/ccmjga/mjga-scaffold
Here is a rapid development framework that allows you to experience Spring Boot 3, jOOQ, and Java 17 directly. To get started, simply run the provided docker-compose.yml file.
The biggest Java problem is the Spring.
I'm sorry to read you had so hard time working on Java.
I would like to ask you why, and in which way, working with another language will be different?
And which language you think will address your issue better than Java do?
Java was one of the primary programming language that was part of the curriculum. However, those "Java" days are over for the majority!
Why?
It's refreshing to see an honest discussion about personal preferences and challenges with a programming language. This type of introspection contributes to a nuanced understanding of language choices, allowing developers to share their experiences and potentially find solutions or alternatives. Your willingness to express both frustration and curiosity fosters a healthy dialogue within the programming community. Keep sharing your insights, as it adds valuable perspectives to the dynamic world of software development!
I took Java 3 times in college back in 2008-2012. I never learned it.
How did you manage to have a video in the DEV banner ? How long can it be ? Curious
okay, but why do you hate them?
It's very verbose.
That's a myth.
But where is the WHY?
You provided too few details which explain your hate. I suspect the roots of the hate not related to the language (especially modern).
Totally relate to the coding struggles! These languages have shaped us, despite the sleepless nights. Here's to a future with more intuitive coding and well-rested developers! ππ€