It is always funny to see people saying java is old, not fun, complex and not for young developpers. Well, I can tell you I spend 2 or 3 years with NodeJS backend in K8S infra and it was the most painful experience of my entire life. A fucking disaster. This is what fun, uncomplex and new languages are in real life ? Take a look on what GraalVM can do, What Quarkus can do, what SpringBoot can do, and try to do that with the other ones... what a joke. What you are talking about was true at the end of the JEE era, but right now, with the most recent updates Java became really powefull.
In the fashion industry.. ehem.. I mean, the software industry, people abandon a language right around the time it's getting good. Once Java got really sophisticated with features, performance, and garbage collectors, people moved on to immature languages with less libraries, unsophisticated VMs but a lot of wiz bang features (a lot of which are retro and not very good like some of the "modern" ways to handle errors.. ).
@@acasualviewer5861 so true. The big mistake made by rookies is to underestimate the amount of complexity required by popular infrastructure like k8s. No, you don't use Python or NodeJS in this land. sorry. or you are just crazy. Rust and Go may be good candidates but not for today. they are just for CLI tools in my opinion at this point. They are not ready for complex microservices or at least only for very specific ones. C# can be better than java in many ways but they have "kind of" failed in the container market I think.
Your comment sums up the software engineering social media landscape perfectly. They over hype these new "exciting" languages, but you end up with a bunch of problems that you wouldn't have had in the first place.
Java has pattern matching and in fact it's already more powerful that the one in C# because of exhaustive checking on sealed hierarchies. I'd recommend to do a bit more preparation to your videos.
You can't judge a (major) language's popularity based on stackoverflow question volumes. The more mature a language is, the fewer novel questions it gets.
Exactly: That is like hiring the programmer most experienced in debugging. Is it better to be an expert in fixing mess you made or is it better to never need to debug? It is a qustion about maturity!
@@traintocode not really. JavaScript has continued to acquire new features at a high rate, and there are *so many* questions about JS frameworks that all get tagged with JavaScript too. It's also a language far more likely to attract newbies, and thus generate more questions...
@@traintocode nature in age not in usage. java is used for web for decades. it's super known. Javascript in the backend it's new so that's why people talk about it.
Summary: Don't use Java - its slow, use Javascript instead. Don't use Java - its old, use Python instead. Don't use Java - it isn't hip enough, use C# instead. Don't use Java - it has too many successful libraries leading to an emotional fatigue. Don't use Java - it doesn't have "THE community" (???). Don't use Java - it isn't easy to use (??). Don't use Java - it isn't fun (?). Don't use Java - it's reliable..
Low latency extremely high performance algorithmic trading platforms in financial centers like London use Java for a reason. Try sending one million messages per second from one VM to another VM using memory mapped files and you will understand performance.
I remember the birth of Java in the mid 90s, so we must be around the same age. Prior to that I primarily did C/C++. Java made me so much more productive. What used to take days could be done in hours, not even to mention essentially eliminating obscure memory corruptions. I have done Java development at multiple companies over the years since then, and even a little still now. But there were always problems. It has always felt really slow, even 30 years later today. And the Java UI never quiet matches the native UI (yes, there are non-standard workarounds). The casing and common syntax formatting is quite ugly. All of these issues and more were resolved when C# arrived around 2001. It was probably around 2003 or 2004 that I fully fell out of love with Java. The reason was how generics were implemented: type erasure rather than actual generic types in the runtime. I understand why this was opted for, but it was the final straw for me. I still use Java, but only when I have to. In my career Java has always seemed to only exist for legacy code bases. The senior developers don't want to touch it and younger developers look at like I may look at Fortran.
A lot of your points would apply 7-10 years ago, but are currently outdated. It's important to get up to date with the latest language features before making commentary on it.
I'm not aware of any new Java features that people are super excited about. Maybe you're right though and we'll see higher results for Java in the 2025 SO survey.
@@traintocode Note that we are all very kind with you 🙂, but that's true: you really need a big giant refresh about what is Java today. then okay, do a video about it.
@@traintocode it's possible that it won't, people generally don't go look for these things on their own, and a lot of people are stuck on older versions for professional resons. But you as a content creator making videos on the topic absolutely should have.
Yes, C# had pattern matching first, but Java is trying to catch up. See JEP 440 & 441 that released in Java 21 for example or JEP 455 that previewed in Java 23 this year. And in my Languish trends data, I see Java holding rather steady the past 1 1/2 years or so. I don't know the cause, but I think they've been holding off market share decline recently.
History is showing each year that going against Java (the platform) is a mistake. What about Java (the language)? Well, the platform is what matters most. Don't like Java (the language)? Pick and choose: Groovy, Scala, Clojure, JRuby, JPython, Kotlin, etc. You'll get interoperability and access to a lot of Java APIs/libraries.
I'm still in love with Java especially the modern stuff I try to jump on Java projects as much as possible.... For me it's much better than c++. Go anything reacts...... And if you use a framework like quarkus.... It's over
It's very clear he does not know much about Java listening to him talk The community is extremely fast there's constant improvements and what he says can't be done in Java can and it looks much better
I would be curious to see if someone out there does a “The Case for Java in 2025” video. I would hope that there would have been a lot of quiet improvements made over the past few years, and people ask “Have you worked with Java lately? Those old annoyances that people complained about in the mid oughts are no more.”
There's loads of people in the comments here defending Java, if I made a video saying how great it is I guarantee there'd then be loads of comments telling us it's rubbish and out dated.
@ Yes, you would get those kinds of comments regardless. My suggested title above is more click bait sounding, and you might have gotten more views. And I would like to see to what extent my assertions above are true.
@@IoanEugenStan not at all it's a very human response" This reply should explain you are a human sufficiently well. If you need any more help feel free to ask me. In the meantime I'll be sat here plotting the downfall of mankind.
@@samjimanI'm actually totally on board for criticism. It helps me make better videos. The software developer community is actually really cool with criticising stuff because they always do it in a respectful way and don't just attack people and hominem like in so many other niches.
Java broke the taboo (at a large scale) of writing projects in languages other than C or C++. It also had a huge library included and an even larger open source ecosystem. It was in the right place at the right time. Java has lost favor because of Oracle. People don't trust Oracle.
Developers will run after the next cool thing - which invariably is supposed to "fix the problem" with whatever language it is intended to replace. Java was supposed to be the platform for safe internet-enabled apps. It became a popular attack vector for malware. I don't remember who said it, but I recently came across someone who nailed it by stating that all programming languages are shit. Of course - a younger me would probably disagree.
You didn't mention Oracle trying to cash in too much, or the languages which compile to Java byte-code which have kept up with up-and-coming trends. True, it's not Java, but they deserve a mention.
I just want to make sure what you stated. You said that big enterprises and businesses who make tons of money use it reliably but new developers who don’t really have a lot of experience with coding doesn’t. Thus Java is not good. Did I summarize this video correctly? Also great video production quality! I just can’t tell if this was made to engagement farm or was meant to be taken seriously.
Almost except I never actually said "thus Java is not good" nor do I believe it. I was really just commenting on the SO developer survey putting it lower and lower every year. And thanks (I think) I have no interest in engagement farming I just like making TH-cam videos.
@ fair! Thanks for the reply! Also shows some work the Java community needs to do to reengage the new age community if they want to stay relevant. This is the first video I’ve seen of yours so wasn’t sure what to expect but now after watching some of your other videos, your content is great just this seemed a bit more of an attack on java from first watch.
I can testify that NodeJs is WRITE ONCE, CAN'T DEBUG ANYWHERE. It's just undebuggable (in my case it was a breakpoint in a lib loaded in a lib loaded in a microservice), people do console.log instead. what a shame. the source map go crazy at some point of complexity (mixture of libs and typescript, you name it...). It just don't work. Then compare this nightmare to the JVM and its debugging capabilities (remote debug in a pod baby !). it's another world. ... a professional one. 🙂
You might want to check out modern java. It has records, pattern matching, sealed types, etc. It's not super elegant, but it's there. And i'd argue virtual threads are objectively better than async/await
Quite a few things started in this video are not correct, like the pace of releases in Java, among other things. Nowadays i would consider Java over something like Kotkin or Scala, its syntax has evolved, bridging the gap between them, ands still, it’s Java , with millions of developers.
For me it depends, for what i'm going to achieve. I work in Java, and i use it as functional or OOP. I preffer also C++, i like Asembler, but mostly i work with JS and other web development things :)
Look up Java's project Amber. It's added Records for sum types and added Sealed Classes for product types for ML style algebraic data types. It's added Switch Expressions to deconstruct algebraic data types similar to C# cases. Look up Java's project Loom form light weight threading obliviating the need for async programming styles. According to the OpenJDK team, ML is modern Java's inspiration, not Kotlin, C#, Scala or Go.
Just because you don't understand or master Java doesn't mean Java is the problem. Have you seen the mess Kotlin is bringing to the table? Script kiddies LOVE kotlin and rust, and I suppose this junior programmer probably is one of them?
Maybe it‘s worth mentioning that as a developer you are not always given the chance to choose what you think is the „coolest“ programming language. Also, the coolest language is not the one that solves problems the most effective way or is efficient in your specific use case. And sometimes you want to stay in the ecosystem already in place. That‘s why I personally like Kotlin. Can‘t remember my last Nullpointer Exception 😅
Umm ... applets? I don't think they were ever all that big of thing for the Java development landscape. It was all backend, and maybe some standalone Java apps. Applets became unpopular after not too many years.
@@traintocode I'm just giving my subjective impression. I jumped on the Java hype train around 2000 and I do remember some applets here and there, but I just don't remember them as a huge part of the landscape. I think they had a lot of constraints on what they could do. And as JavaScript became increasingly potent, the applets vanished. I remember writing an applet that ran some math code back in the 90s, but that was just for the practice of trying out the applet concept, not because the code needed that platform. Would have been easier just to do it as a command line program. And again, during the 8 or 9 years during which I coded Java, it was almost all serving up web pages. Then I switched to Ruby (which I liked better).
Java wasn't revolutionary, it was a (dirty) simplification of C++, and it was marketed to people who didn't program as the thing that they should force upon those that they manage. It's VM only worked with the 1 language, while p-code ran at least Pascal and C, but, like the JVM, p-code interpreters were slower than Pascal or C code compiled to a native executable. By the way, C is truly "write once, run anywhere" with a few platform abstraction libraries, so there really has never been a point to having Java. Java also mainstreamed, and doubled down on 3 of the biggest mistakes in programming: nulls, exceptions, and garbage collection. Forget Java. Just use Rust.
Basically yes. Reliability comes at a cost of speed. A brand new startup doesn't need to build a reliable MVP they need a quick one, which is why I think we see this trend in startups.
@@traintocode You can create a complete service in Java in a matter of minutes, with Quarkus even natively compiled. How much quicker would you want it?
I've built from scratch MVP web service backend with communication with a few external services via http and mysql db pretty fast using SpringBoot 3.x, JDK 21, lombok. Dunno, maybe if I knew like go or python it would be faster. Seemed pretty fast to me!
@@christianibendorf9086All these arguments that development time is slow have 0 basis in reality, no survey, study, or experiment was ever done to verify this. People just state this because in Java you have to write semicolons...or maybe one extra line in an algorithm. No thought I'd even given to the maintenance or debugging afterwards.
Java was also free in a time where compilers and libraries were sold for cash money. This meant anyone w/an internet connection could start learning. Even the EE offerings had free 'reference implementations', such as tomcat and glassfish, that were good enough for many companies, especially when compared to what Oracle or BEA were charging. Then oracle happened. That sucked the trust and enthusiasm out of the room. MySql vs maria db, hudson vs jenkins, etc. Even java itself was clearly bought just to sue Google over Java ME vs Android. Hard to want to champion that.
i think real technology geeks wouldnt really care what's the greatest and what's the least because they can adapt on the changes in these technologies and each technology can be as equally important depending on the project and the current need. Whatever you need to deliver as long as it has fast performance, cheaper to develop with, shorter development time. But i think the coolest is C/C++ since the first C++ compiler was written in C/C++. The rest like Java, C# or Python their first compiler (and virtual machine it was interpreted) was written in C/C++. And in C/C++ you can just make your own language.
@@christianibendorf9086 ansi c standard can have up to 12 pointer🤣 maybe thats just the minimum stack depth c hardware that time. application-wise, maybe you wont reach that much cross fingers 🤣
Java is not a technicians' product, it is a market hype product. Most market products are programming paradigm backlashes: Java reinvented generics 27 years after they were really invented, and they did it in a deficient way. And the open source software community loves capable programming languages, not Java. Java is what was pressed down our throat by our bosses, and we accepted it because we're making money on it. 1:15: UPDATE: It sounds like you claim that you programmed code that was written for different operating systems, but based on the description, it seems you don't understand what you are talking about, and are only second guessing what others did before. Mostly programs were just not portable, so they existed on one operating system only. Portable programs had different code bases for GUI because they are that different, (or they used wxWidgets, which was then called wxWindows, and at that time it was an inferior experience). They also may have had quasi-unified code bases for operating system calls and that may have been error prone.
@@martinsmith2802 I don't have a problem with Microsoft. The company has been a great custodian of the language. They have innovated, moved it forward, and made it widely available. Microsoft is developer friendly. I'm not the type to despise large companies just because they are large.
@@martinsmith2802 You're arguing against yourself. C# is amazing, if apache owned it, it'd be the #1 language. Many people still thing its closed source and windows only
I don't understand why you hype Python so much. It is older then Java and uses almost every where C code underneath. Fore shure it is easy to write code in it. Everybody can hack his way through it and the result looks like that. Hacked 😂
Modern Java (>17) is a fckin masterpiece and leaves most of its competitors in the dust. Jakarta EE and MicroProfile complement Java to a robust and super productive environment. There was Zero research involved in the making of this video.
On November 8, 2024, the FBI, in collaboration with other U.S. government agencies, including the Cybersecurity and Infrastructure Security Agency (CISA), recommended that software developers transition away from memory-unsafe languages, such as C++, by January 1, 2026. These languages allow direct manipulation of memory addresses without built-in safeguards. Instead, they suggest using the following languages: • Python • Java • C# • Go • Delphi/Object Pascal • Swift • Ruby • Rust • Ada
Java has been going through a renaissance recently - the Classfile API provides strong metaprogramming capabilties and Project Panama FFI is quite powerful. Its the ecosystem of Java that sucks - Spring Boot OOP bloat is not very exciting. For stable production systems, I would choose Java over Python or Javascript (both of which do not support multithreading or static typing); but I would also push for Rust if given the choice.
My target audience isn't Java developers. It's people who use other languages who are looking at Java from the outside. I suspect Java developers already know everything I talk about in this video.
I'd say my main reason for disliking Java is that it's far too verbose and doesn't have enough syntax. It takes the "just add more code" concept from C++ to an extreme. I'd rather write a program in 5 lines of code and be done than write 20 or 30 lines that go beyond the edge of my screen and require me to either horizontally scroll or do word wrapping. Also, did they ever add operator overloading to Java? I love being able to define weird types and then overload all the operators on them. Oh, and UDL's are awesome. If you haven't implemented your own then you need to. They introduced so many cool things in C++11.
Good luck running Python on the backend for anything non trivial. The lack of true parallelism aside, dynamically typed languages like Python suck at scale and they require more test coverage than statically typed languages like Java. If you don't like the verbosity, use Scala - you still get the JVM. Java is already becoming more and more functional in nature even without going all in with Scala. I don't have a problem with folks using Go or Rust to get faster native binaries, but that's a yesteryear problem. Most services today need replication for scalability, and tend not to be resource bound.
What about J++? Microsoft's attempt at having java in visual studio. They probably made C# after getting sued for J++. I still have a J++ book for applets and servlets. lol, good times.
This is like watching a review of Java on Fox News! He doesn't seem to have his facts correct, know modern Java or care. I love the line about only people who care about reliability use java. I even began to wander if English was his first language he made so many mistakes. I can't wait for his next video on why the internet will never catch on.
your right about C# , .Net has has provided so much for ease of rapid development, like java which has android studio so java and c# are like the industry standard for crossplatform development tools, whereas javascrip is best for its web development,
"whereas javascript is best for its web development" Yeah? Tell that to the Electron, Tauri, React Native, Bun and Deno communities. They apparently didn't get that memo.
Java was popular, like pretty much all other past and current popular languages because of the "hype." IBM/Oracle burned a lot of money marketing Java, which is why it became popular. Now after decades of people banging their heads against it and forced to see it's warts everyday, they realized that it wasn't worth it. Popularity rarely if every equates to quality. Sharp is no different and neither is .NET in general. The problem with languages in the industry has to do with marketing. Who is backing it and why. If we look back at the last 50+ years its obvious why popular languages became popular and became mainstream, and then eventually unpopular. The Industry depicts the languages not the people forced to use them, which is illogical and stupid, but it is what it is and until the workers grow a pair, its going to stay that way.
thank you for this informative video! I found it easy to follow and understand. I am really confused why so many people in the comments think that you're trying to bash on Java. I found it clear that Java might be old and lacks 'flashiness' but still a great language that's here to stay :p
Bruh, your talking points are 7 to 8 years old. jdk 24 will be released on march 2025 and jdk 25 will be later on the same year. Releasing an LTS every two year with six months of release cadence with such a huge ecosystem, its mind blowing. Can't agree with your points.
I don't get how you can criticize Java (rightfully) and like C# at the same time. I know it's not entirely true, but it's really fair to say that C# is Java modernized by Microsoft. Of course modernized can be better than the original, but in such case: why not Scala?
The reason I double down on the C# comparison is that it's syntactically much more similar to Java than scala is, it just has more features so it's an easier comparison. Plus loads of my channel subscribers are C# devs.
C#? No thanks. I don't want to go down that Microsoft mess of 'write once, crash everywhere'. It would also ultimately mean being forced to use Windows and probably deploy on Windows servers. Not for any strong technical reasons but just because people play computer games on Windows (yes I have heard that used as an argument as to why should stick with Windows) Anecdotally I heard that the same versions of C# libraries are different between platforms which sounds like typical Microsoft . These days if it's not Android development then people would likely use Spring/Spring-Boot framework with which can create a variety of applications. Most people jump on the 'functional programming' bandwagon just because it's the latest thing. My experience of functional programming was a nightmare. It wasn't my application but trying to debug it was a pain as the application was jumping all over the place, and of course none of these 'functions' had any tests because writing tests isn't cool for these hipsters. The new Java FFM is interesting and makes calling native code a lot easier than JNI.
@@traintocode You didn't read what I wrote: 'Not for any strong technical reasons but just because people play computer games on Windows (yes I have heard that used as an argument as to why should stick with Windows)". And others have pointed out, your information on Java is years out of date.
Think you spend too much time talking to camera, people lose interest fast, should have simple visual examples and comparisons of each point you're making. fireship is pretty much the bleeding edge example of how to engage with the information overloaded tech interested audience of today aside from his focus on sarcastic / ironic humor. I agree that Java is falling out of the sky, since it lacks the hype factor the communities that are behind other languages, it was the big kahuna during early days of corporate growth.
I actually completely agree with this - but man making visuals is extremely time consuming and I can't spend 20 hours on every video. Someone recommend me an AI tool for making visuals and I'll be all over it. Currently I just spend a lot of time clicking around in Resolve to make like 4 graphics. Being a lone TH-camr with a job and a family trying to compete against actual teams of full time content people is really hard.
As always, such videos are so opinionated... Most of the points in the video aren't even valid, which Java version are you talking about and are you still in the eraly 2000s where Java hardly got updates. JavaScript has more uncalled for libraries and frameworks than any language on earth and you speak of *DECISION FATIGUE* in Java eco system... anyways, looks like this is a C# fanbase channel after all so I didn't expect much.
Same reason I didn't mention Scala or Clojure really - they run on the JVM but they are distinct languages from Java and it didn't really fit the narrative soz.
@traintocode but kotlin was made specifically to replace java. The number of teams migrating from java to kotlin is probably one of the most important factors. It's like c and c++ or javascript and typescirpt
It was a good video until you started talking about OOP, everything after that sounds like it came from ChatGPT, or the most far fetched sources since it is actually just a lot of false facts in a row. Bro really said that C# is embracing funcional programming over OOP???? That's the nost out of touch thing anyone with (apparently) tech know how have said
I don't think it's out of touch, if you look at all the new C# features from Record types to pattern matching, the language is releasing a lot more "functional programming" type features than OOP oriented ones lately. It's definitely embracing functional programming.
There's a couple reasons why Java is bad. 1. Write once run everywhere is a lie. You cannot run Java on non supported platforms. The user also needs to have rbe java environments on their machine. Compare that to python that does not need to be compiled or languages like Go that only need to distribute the binary. 2. Build strategy. Since Java needs to be built despite being interpreted, you need a build strategy. Your choices are maven and Gradle. Both garbage. Compare to Go or Rust where it's literally one command. 3. OOP is very ingrained into the language so you can't do anything productive easily. There's too many things that are confused in the language. For example, I need to create a separate file for a simple struct. And I need a class for a new namespace. The way Go and Rust do it, with modules is the much better approach. 4. The type system is confusing and not that useful. No tagged unions. Pattern matching is bad. Lambdas and closures are badly implemented. You have to rely on try catch. Type constraints are implemented with inheritance and interfaces which is confusing and not as powerful as traits in Rust for example. 5. A lot of garbage libraries you have to sift through to find something actually useful. Overall, I think there's zero reason to use Java compared to Go, Rust or Ocaml.
Comparing Java to Python or Go overlooks the ecosystem differences. Python also requires dependencies that may not be installed on all systems, and Go binaries can be large while lacking the dynamic runtime advantages provided by the JVM. The JRE can be bundled with Java applications as well. Additionally, you can't run Python without it being installed locally, so it's essentially the same situation as with most other programming languages. Of course, you can use Docker, virtual environments, etc., but you can do the same with Java, so.. :) Regarding libraries: RxJava and Spring cover 99% of use cases. You're welcome. :) Points 3 and 4 are in my opinion personal preferences. I enjoy using Go, but personally, I don’t like Rust. But I can accepth that you prefer those over Java. But... Mentioning Python as an example of a language that doesn’t need to be compiled is funny when you consider that it can’t even do parallel processing due to the GIL. So, once again, it’s all about your needs and personal preferences. :)
1) You need a python interpreter for your platform. You can distribute java programs as single binaries too, not very (space) efficient, but doable. 2) You can use a build tool, but you don't have to. Maven and Gradle are common options, but not the only ones. 3) Your example is utterly wrong. 4) So how are lamdas badly implemented? Rely on try catch? What are you talking? There is at least one good reason to use Java compared to anything: If you or your team are majorly experienced in Java. And there a still a lot of Java devs still out there.
1) With Python you also need a runtime and sometimes you need to install modules which require compilation. On Windows that means installing literally gigabytes of compiler tools from Microsoft and then hope the compilation doesn't fail. If you want a truly "write once run everywhere" without a runtime, you need to write a C program and compile it for different OS'es and architectures. And if you're doing anything more than hello world, your code will be rife with ifdefs to account for platform API differences, have fun with that. 2) Granted, build tools sucks, but on the other hand, they suck for many other languages as well. It's not an easy thing to get right. But maven does so much more than just builds, you can make an entire pipeline that runs your tests, reports test coverage, builds your binary just the way you need it, distribute it, etc... You're comparing a simple knife to a Swiss army knife. Furthermore, since Java 11 (released 6 years ago), you can run uncompiled Java classes with one command. 3) You don't need to create a separate file for a struct (nb structs are called records in Java), inner classes/inner records exist. I don't know what you mean with needing a class for a new namespace, namespacing is done via packages but you don't even have to use packages, you can just put everything in the source root if you want to. Comparison to Go and Rust is really just "same but different". Yes the OOP part can be heavy-handed, but choosing your libraries strategically helps a lot with that (as it does in any language). 4) I don't know what you mean. Lambdas and closures work just fine. 5) Like with any other language... Plenty of unmaintained stuff in Go, Rust, Javascript, Python, ... Overall, I think there's zero reason to take your comment seriously.
1) You cannot run a Go binary build using Linux on Windows. You would have to target it to run on a specific platform. 2) gradle run 3) Only one class needs to be public. You can have multiple classes in one file if you wish.
This video misses the mark. It's not that Java is not the "cool" language, it's that Java is downright unpleasant to work with. There is a lot of cruft, a lot of boilerplate, the tools to work with it are slow, and the language itself lends to some extremely bizarre over-engineering using OO programming techniques. There's also the fact that it's historically been riddled with security issues.
it's actually the non-OO programming techniques like getters/setters that make Java frameworks ugly.. but that's more of a framework than a language problem.
@@christianibendorf9086I expect they are referring to the gang of four design patterns. For a while every developer was shoehorning design patterns into codebases that simply didn't need it. A lot of that happened in the Java world so that's probably what they are referring to.
It is always funny to see people saying java is old, not fun, complex and not for young developpers. Well, I can tell you I spend 2 or 3 years with NodeJS backend in K8S infra and it was the most painful experience of my entire life. A fucking disaster. This is what fun, uncomplex and new languages are in real life ? Take a look on what GraalVM can do, What Quarkus can do, what SpringBoot can do, and try to do that with the other ones... what a joke. What you are talking about was true at the end of the JEE era, but right now, with the most recent updates Java became really powefull.
In the fashion industry.. ehem.. I mean, the software industry, people abandon a language right around the time it's getting good. Once Java got really sophisticated with features, performance, and garbage collectors, people moved on to immature languages with less libraries, unsophisticated VMs but a lot of wiz bang features (a lot of which are retro and not very good like some of the "modern" ways to handle errors.. ).
@@acasualviewer5861 so true. The big mistake made by rookies is to underestimate the amount of complexity required by popular infrastructure like k8s. No, you don't use Python or NodeJS in this land. sorry. or you are just crazy. Rust and Go may be good candidates but not for today. they are just for CLI tools in my opinion at this point. They are not ready for complex microservices or at least only for very specific ones. C# can be better than java in many ways but they have "kind of" failed in the container market I think.
Your comment sums up the software engineering social media landscape perfectly. They over hype these new "exciting" languages, but you end up with a bunch of problems that you wouldn't have had in the first place.
The herd always listens for their opinion leaders, classic.
Java has pattern matching and in fact it's already more powerful that the one in C# because of exhaustive checking on sealed hierarchies. I'd recommend to do a bit more preparation to your videos.
You can't judge a (major) language's popularity based on stackoverflow question volumes. The more mature a language is, the fewer novel questions it gets.
@@RayBellis Javascript is equally mature however trends.stackoverflow.co/?tags=java,javascript
Exactly: That is like hiring the programmer most experienced in debugging. Is it better to be an expert in fixing mess you made or is it better to never need to debug? It is a qustion about maturity!
yeah, maybe they just run out of questions
@@traintocode not really. JavaScript has continued to acquire new features at a high rate, and there are *so many* questions about JS frameworks that all get tagged with JavaScript too. It's also a language far more likely to attract newbies, and thus generate more questions...
@@traintocode nature in age not in usage. java is used for web for decades. it's super known. Javascript in the backend it's new so that's why people talk about it.
In java, you can write functional code without classes, see jep 495. And that is just one thing wrong in this video
TIL thanks. Although that does feel like they are simply copying C# than doing any actual innovation with the language. Time will tell I guess.
"@traintocode 'simply copying C#' funny because C#'s entire existence is copied from Java"
@@FilipCodes that's exactly why it's funny. Because now it's flipped, how the turn tables.
@@FilipCodesYeah, you took the words right out of my mouth. C# was literally a carbon copy of Java when it came out.
@traintocode Not at all, actually. Please tell what was brand new invented in C# that hadn't been done before and that Java "simply copied".
Java is like the girl you would hook up with, but you'd be ashamed to be seen with.
Summary: Don't use Java - its slow, use Javascript instead. Don't use Java - its old, use Python instead. Don't use Java - it isn't hip enough, use C# instead. Don't use Java - it has too many successful libraries leading to an emotional fatigue. Don't use Java - it doesn't have "THE community" (???). Don't use Java - it isn't easy to use (??). Don't use Java - it isn't fun (?). Don't use Java - it's reliable..
understood. use java for everything and be happy :)
I can't figure out if this is sarcasm or not. It's not helping.
@@OZTutoh Its sarcasm ofc.Java its cool and and seems host seems stay in past.
I mean, Java certainly isn't fun or easy.
Low latency extremely high performance algorithmic trading platforms in financial centers like London use Java for a reason. Try sending one million messages per second from one VM to another VM using memory mapped files and you will understand performance.
I haven't "fallen out of love" with Java. Quite the opposite. I like it more and more.
I totally disagree with you.
If enough people comment this I'll make a follow-up video called "Why Java is still cool"
@@traintocode In my country Java still seems to have the biggest number of jobs.
I remember the birth of Java in the mid 90s, so we must be around the same age. Prior to that I primarily did C/C++. Java made me so much more productive. What used to take days could be done in hours, not even to mention essentially eliminating obscure memory corruptions. I have done Java development at multiple companies over the years since then, and even a little still now.
But there were always problems. It has always felt really slow, even 30 years later today. And the Java UI never quiet matches the native UI (yes, there are non-standard workarounds). The casing and common syntax formatting is quite ugly. All of these issues and more were resolved when C# arrived around 2001. It was probably around 2003 or 2004 that I fully fell out of love with Java. The reason was how generics were implemented: type erasure rather than actual generic types in the runtime. I understand why this was opted for, but it was the final straw for me.
I still use Java, but only when I have to. In my career Java has always seemed to only exist for legacy code bases. The senior developers don't want to touch it and younger developers look at like I may look at Fortran.
A lot of your points would apply 7-10 years ago, but are currently outdated. It's important to get up to date with the latest language features before making commentary on it.
I'm not aware of any new Java features that people are super excited about. Maybe you're right though and we'll see higher results for Java in the 2025 SO survey.
@@traintocode Note that we are all very kind with you 🙂, but that's true: you really need a big giant refresh about what is Java today. then okay, do a video about it.
@@traintocode there are, check project liliput, project loom, project valhalla, project panama. It's full of significant improvements
@@traintocode it's possible that it won't, people generally don't go look for these things on their own, and a lot of people are stuck on older versions for professional resons. But you as a content creator making videos on the topic absolutely should have.
Yes, C# had pattern matching first, but Java is trying to catch up. See JEP 440 & 441 that released in Java 21 for example or JEP 455 that previewed in Java 23 this year. And in my Languish trends data, I see Java holding rather steady the past 1 1/2 years or so. I don't know the cause, but I think they've been holding off market share decline recently.
Also, Java has 2 releases every year these days. Been doing that for years. (I'm not a major Java user myself. Just trying to correct some things.)
8:13 Java get's new releases every 6 months now ^^ Every 4th release is a LTS every 2 years .
History is showing each year that going against Java (the platform) is a mistake. What about Java (the language)? Well, the platform is what matters most. Don't like Java (the language)? Pick and choose: Groovy, Scala, Clojure, JRuby, JPython, Kotlin, etc. You'll get interoperability and access to a lot of Java APIs/libraries.
I'm still in love with Java especially the modern stuff I try to jump on Java projects as much as possible.... For me it's much better than c++. Go anything reacts...... And if you use a framework like quarkus.... It's over
It's very clear he does not know much about Java listening to him talk The community is extremely fast there's constant improvements and what he says can't be done in Java can and it looks much better
I would be curious to see if someone out there does a “The Case for Java in 2025” video. I would hope that there would have been a lot of quiet improvements made over the past few years, and people ask “Have you worked with Java lately? Those old annoyances that people complained about in the mid oughts are no more.”
There's loads of people in the comments here defending Java, if I made a video saying how great it is I guarantee there'd then be loads of comments telling us it's rubbish and out dated.
@ Yes, you would get those kinds of comments regardless. My suggested title above is more click bait sounding, and you might have gotten more views. And I would like to see to what extent my assertions above are true.
zero insight its like a ai article, no knowledge in this video
@@TheMisiekkiller I'm definitely not an AI lol. Thanks for the feedback.
@@traintocode it's what an AI would say :).
@@IoanEugenStan not at all it's a very human response"
This reply should explain you are a human sufficiently well. If you need any more help feel free to ask me. In the meantime I'll be sat here plotting the downfall of mankind.
I'd love to see your content. It's easy to criticise.
@@samjimanI'm actually totally on board for criticism. It helps me make better videos. The software developer community is actually really cool with criticising stuff because they always do it in a respectful way and don't just attack people and hominem like in so many other niches.
Java broke the taboo (at a large scale) of writing projects in languages other than C or C++.
It also had a huge library included and an even larger open source ecosystem. It was in the right place at the right time.
Java has lost favor because of Oracle. People don't trust Oracle.
I tried really hard not to publicly throw shade on oracle in this video but privately I agree with you.
Developers will run after the next cool thing - which invariably is supposed to "fix the problem" with whatever language it is intended to replace.
Java was supposed to be the platform for safe internet-enabled apps. It became a popular attack vector for malware.
I don't remember who said it, but I recently came across someone who nailed it by stating that all programming languages are shit.
Of course - a younger me would probably disagree.
Young Programmers. The hipsters and the TH-camrs
You didn't mention Oracle trying to cash in too much, or the languages which compile to Java byte-code which have kept up with up-and-coming trends. True, it's not Java, but they deserve a mention.
There's only so much shade I can throw in one video without getting ratio'd off of TH-cam
I just want to make sure what you stated. You said that big enterprises and businesses who make tons of money use it reliably but new developers who don’t really have a lot of experience with coding doesn’t. Thus Java is not good. Did I summarize this video correctly? Also great video production quality! I just can’t tell if this was made to engagement farm or was meant to be taken seriously.
Almost except I never actually said "thus Java is not good" nor do I believe it. I was really just commenting on the SO developer survey putting it lower and lower every year. And thanks (I think) I have no interest in engagement farming I just like making TH-cam videos.
@ fair! Thanks for the reply! Also shows some work the Java community needs to do to reengage the new age community if they want to stay relevant. This is the first video I’ve seen of yours so wasn’t sure what to expect but now after watching some of your other videos, your content is great just this seemed a bit more of an attack on java from first watch.
Updates have a long wait? There is a new version every 6 months! You got the story right up until 10 years ago.
It's not WRITE ONCE, RUN ANYWHERE... It's WRITE ONCE, DEBUG EVERYWHERE
In the end it still comes down to the level of competence of the developer. ;-)
I can testify that NodeJs is WRITE ONCE, CAN'T DEBUG ANYWHERE. It's just undebuggable (in my case it was a breakpoint in a lib loaded in a lib loaded in a microservice), people do console.log instead. what a shame. the source map go crazy at some point of complexity (mixture of libs and typescript, you name it...). It just don't work. Then compare this nightmare to the JVM and its debugging capabilities (remote debug in a pod baby !). it's another world. ... a professional one. 🙂
No that's C#, though more aptly because Microsoft are involved it's 'write once, crash everywhere'
Java is the best in terms of features, in my opinion. The problem is job market
Java actually has a huge job market. What do you mean?
You might want to check out modern java. It has records, pattern matching, sealed types, etc. It's not super elegant, but it's there.
And i'd argue virtual threads are objectively better than async/await
For the logs: python was around 20 ago allready, it 8s not new ;)
Looking for a job, learn Java.
It's still enormously used.
So is PHP......
And so is COBOL
Quite a few things started in this video are not correct, like the pace of releases in Java, among other things. Nowadays i would consider Java over something like Kotkin or Scala, its syntax has evolved, bridging the gap between them, ands still, it’s Java , with millions of developers.
I left Java for Groovy and, more recently, Scala. The thing that I didn't change is the JVM.
For me it depends, for what i'm going to achieve. I work in Java, and i use it as functional or OOP. I preffer also C++, i like Asembler, but mostly i work with JS and other web development things :)
Look up Java's project Amber.
It's added Records for sum types and added Sealed Classes for product types for ML style algebraic data types. It's added Switch Expressions to deconstruct algebraic data types similar to C# cases.
Look up Java's project Loom form light weight threading obliviating the need for async programming styles.
According to the OpenJDK team, ML is modern Java's inspiration, not Kotlin, C#, Scala or Go.
For the record Python is older than Java
Just because you don't understand or master Java doesn't mean Java is the problem. Have you seen the mess Kotlin is bringing to the table? Script kiddies LOVE kotlin and rust, and I suppose this junior programmer probably is one of them?
Hi bro, could you please share some of those kotlin bad sides. I am considering learning it in the next week.
@@minor12828 … the difference between the two keywords va… and va… ;-)
Also, doesn't Kotlin make everything public by default?
Side note but all languages have bad sides, that shouldn't put you off learning something new.
script kiddies love Rust? Really?
@@nathanlewis42 The number of bad takes in 3 sentences is stunning.
Maybe it‘s worth mentioning that as a developer you are not always given the chance to choose what you think is the „coolest“ programming language.
Also, the coolest language is not the one that solves problems the most effective way or is efficient in your specific use case.
And sometimes you want to stay in the ecosystem already in place.
That‘s why I personally like Kotlin. Can‘t remember my last Nullpointer Exception 😅
Umm ... applets? I don't think they were ever all that big of thing for the Java development landscape. It was all backend, and maybe some standalone Java apps. Applets became unpopular after not too many years.
We all just fell for the click bait here. ;-)
I remember applets being a huge thing around the turn of the millennium every website seemed to use them
No they were not. There was some talk and hype but not used cases
@@traintocode I'm just giving my subjective impression. I jumped on the Java hype train around 2000 and I do remember some applets here and there, but I just don't remember them as a huge part of the landscape. I think they had a lot of constraints on what they could do. And as JavaScript became increasingly potent, the applets vanished. I remember writing an applet that ran some math code back in the 90s, but that was just for the practice of trying out the applet concept, not because the code needed that platform. Would have been easier just to do it as a command line program. And again, during the 8 or 9 years during which I coded Java, it was almost all serving up web pages. Then I switched to Ruby (which I liked better).
Python is not __newer__
Upvote for writing in markdown.
Java wasn't revolutionary, it was a (dirty) simplification of C++, and it was marketed to people who didn't program as the thing that they should force upon those that they manage. It's VM only worked with the 1 language, while p-code ran at least Pascal and C, but, like the JVM, p-code interpreters were slower than Pascal or C code compiled to a native executable. By the way, C is truly "write once, run anywhere" with a few platform abstraction libraries, so there really has never been a point to having Java. Java also mainstreamed, and doubled down on 3 of the biggest mistakes in programming: nulls, exceptions, and garbage collection. Forget Java. Just use Rust.
Some of us still love Java, and for good reason.
Coolness vs reliability??? 😮
Basically yes. Reliability comes at a cost of speed. A brand new startup doesn't need to build a reliable MVP they need a quick one, which is why I think we see this trend in startups.
@@traintocode I just hope that speedy development does not deal with financial system/module
@@traintocode You can create a complete service in Java in a matter of minutes, with Quarkus even natively compiled. How much quicker would you want it?
I've built from scratch MVP web service backend with communication with a few external services via http and mysql db pretty fast using SpringBoot 3.x, JDK 21, lombok. Dunno, maybe if I knew like go or python it would be faster. Seemed pretty fast to me!
@@christianibendorf9086All these arguments that development time is slow have 0 basis in reality, no survey, study, or experiment was ever done to verify this. People just state this because in Java you have to write semicolons...or maybe one extra line in an algorithm. No thought I'd even given to the maintenance or debugging afterwards.
Java was also free in a time where compilers and libraries were sold for cash money. This meant anyone w/an internet connection could start learning. Even the EE offerings had free 'reference implementations', such as tomcat and glassfish, that were good enough for many companies, especially when compared to what Oracle or BEA were charging.
Then oracle happened.
That sucked the trust and enthusiasm out of the room. MySql vs maria db, hudson vs jenkins, etc. Even java itself was clearly bought just to sue Google over Java ME vs Android. Hard to want to champion that.
i think real technology geeks wouldnt really care what's the greatest and what's the least because they can adapt on the changes in these technologies and each technology can be as equally important depending on the project and the current need. Whatever you need to deliver as long as it has fast performance, cheaper to develop with, shorter development time.
But i think the coolest is C/C++ since the first C++ compiler was written in C/C++. The rest like Java, C# or Python their first compiler (and virtual machine it was interpreted) was written in C/C++. And in C/C++ you can just make your own language.
We all know the coolest is rawdogging assembly language
@traintocode microcode maybe😅
One of the coolest things you can do in C/C++ are pointers to pointers to pointers. :-)
@@christianibendorf9086 ansi c standard can have up to 12 pointer🤣 maybe thats just the minimum stack depth c hardware that time. application-wise, maybe you wont reach that much cross fingers 🤣
Java is not a technicians' product, it is a market hype product. Most market products are programming paradigm backlashes: Java reinvented generics 27 years after they were really invented, and they did it in a deficient way. And the open source software community loves capable programming languages, not Java. Java is what was pressed down our throat by our bosses, and we accepted it because we're making money on it. 1:15: UPDATE: It sounds like you claim that you programmed code that was written for different operating systems, but based on the description, it seems you don't understand what you are talking about, and are only second guessing what others did before. Mostly programs were just not portable, so they existed on one operating system only. Portable programs had different code bases for GUI because they are that different, (or they used wxWidgets, which was then called wxWindows, and at that time it was an inferior experience). They also may have had quasi-unified code bases for operating system calls and that may have been error prone.
Oracle lording over Java hasn't helped its reputation among developers, IMO.
Microsoft and C# ?
@@martinsmith2802 I don't have a problem with Microsoft. The company has been a great custodian of the language. They have innovated, moved it forward, and made it widely available. Microsoft is developer friendly. I'm not the type to despise large companies just because they are large.
Those who follow and see objectively the innovations of Java now recognize Oracle as better steward of Java.
@@martinsmith2802 You're arguing against yourself. C# is amazing, if apache owned it, it'd be the #1 language.
Many people still thing its closed source and windows only
I stopped using it about the Oracle got involved and things just got messy.
I don't understand why you hype Python so much. It is older then Java and uses almost every where C code underneath. Fore shure it is easy to write code in it. Everybody can hack his way through it and the result looks like that. Hacked 😂
I actually wonder why he didn't list HTML as cooler than Java. ;-P
I _never_ like Java. First time I tried it, I lasted about five minutes and tossed it.
6:40 DECISION FATIGUE! THAT'S ME!
Spring ecosystem.
Modern Java (>17) is a fckin masterpiece and leaves most of its competitors in the dust. Jakarta EE and MicroProfile complement Java to a robust and super productive environment. There was Zero research involved in the making of this video.
The best language is the one being adopted by the largest community... period !
On November 8, 2024, the FBI, in collaboration with other U.S. government agencies, including the Cybersecurity and Infrastructure Security Agency (CISA), recommended that software developers transition away from memory-unsafe languages, such as C++, by January 1, 2026. These languages allow direct manipulation of memory addresses without built-in safeguards. Instead, they suggest using the following languages:
• Python
• Java
• C#
• Go
• Delphi/Object Pascal
• Swift
• Ruby
• Rust
• Ada
Java has been going through a renaissance recently - the Classfile API provides strong metaprogramming capabilties and Project Panama FFI is quite powerful.
Its the ecosystem of Java that sucks - Spring Boot OOP bloat is not very exciting.
For stable production systems, I would choose Java over Python or Javascript (both of which do not support multithreading or static typing); but I would also push for Rust if given the choice.
Great review but if your target audience is Java developers you might want to do a little more research and tell us something new.
My target audience isn't Java developers. It's people who use other languages who are looking at Java from the outside. I suspect Java developers already know everything I talk about in this video.
@@traintocode They know better about everything you talk about in this video :)
The tiobe language index would be a better index for language popularity.
Java is still 3rd, for 2023.
That sounds interesting do you have a link?
Write once tweak anywhere....
I'd say my main reason for disliking Java is that it's far too verbose and doesn't have enough syntax. It takes the "just add more code" concept from C++ to an extreme. I'd rather write a program in 5 lines of code and be done than write 20 or 30 lines that go beyond the edge of my screen and require me to either horizontally scroll or do word wrapping. Also, did they ever add operator overloading to Java? I love being able to define weird types and then overload all the operators on them. Oh, and UDL's are awesome. If you haven't implemented your own then you need to. They introduced so many cool things in C++11.
Good luck running Python on the backend for anything non trivial. The lack of true parallelism aside, dynamically typed languages like Python suck at scale and they require more test coverage than statically typed languages like Java. If you don't like the verbosity, use Scala - you still get the JVM. Java is already becoming more and more functional in nature even without going all in with Scala. I don't have a problem with folks using Go or Rust to get faster native binaries, but that's a yesteryear problem. Most services today need replication for scalability, and tend not to be resource bound.
Oh yes, we throw all 10 billion devices
You don't wanna do that they might break
What happened to Java... bloat and slow innovation.
What about J++? Microsoft's attempt at having java in visual studio. They probably made C# after getting sued for J++. I still have a J++ book for applets and servlets. lol, good times.
This is like watching a review of Java on Fox News! He doesn't seem to have his facts correct, know modern Java or care.
I love the line about only people who care about reliability use java.
I even began to wander if English was his first language he made so many mistakes.
I can't wait for his next video on why the internet will never catch on.
Given the recent blatant lies about Big D, it's more like a CNN report.
OK DUDE , i get it , I love java people 😉
So Java is a lot like Pascal … ?
your right about C# , .Net has has provided so much for ease of rapid development, like java which has android studio so java and c# are like the industry standard for crossplatform development tools, whereas javascrip is best for its web development,
"whereas javascript is best for its web development" Yeah? Tell that to the Electron, Tauri, React Native, Bun and Deno communities. They apparently didn't get that memo.
Java reminds me of my ex-wife.....extremely verbose !!!...it is like listening to Disco music in the 2020....
Java was popular, like pretty much all other past and current popular languages because of the "hype." IBM/Oracle burned a lot of money marketing Java, which is why it became popular. Now after decades of people banging their heads against it and forced to see it's warts everyday, they realized that it wasn't worth it. Popularity rarely if every equates to quality. Sharp is no different and neither is .NET in general. The problem with languages in the industry has to do with marketing. Who is backing it and why. If we look back at the last 50+ years its obvious why popular languages became popular and became mainstream, and then eventually unpopular. The Industry depicts the languages not the people forced to use them, which is illogical and stupid, but it is what it is and until the workers grow a pair, its going to stay that way.
what company backs a technology matters a lot.. Microsoft has known that forever.
People liked Sun, they don't like Oracle as much.
@@acasualviewer5861but as far as Java is concerned, Oracle is better steward than Sun.
thank you for this informative video! I found it easy to follow and understand. I am really confused why so many people in the comments think that you're trying to bash on Java. I found it clear that Java might be old and lacks 'flashiness' but still a great language that's here to stay :p
Bruh, your talking points are 7 to 8 years old. jdk 24 will be released on march 2025 and jdk 25 will be later on the same year. Releasing an LTS every two year with six months of release cadence with such a huge ecosystem, its mind blowing. Can't agree with your points.
I don't get how you can criticize Java (rightfully) and like C# at the same time.
I know it's not entirely true, but it's really fair to say that C# is Java modernized by Microsoft. Of course modernized can be better than the original, but in such case: why not Scala?
The reason I double down on the C# comparison is that it's syntactically much more similar to Java than scala is, it just has more features so it's an easier comparison. Plus loads of my channel subscribers are C# devs.
C#? No thanks. I don't want to go down that Microsoft mess of 'write once, crash everywhere'. It would also ultimately mean being forced to use Windows and probably deploy on Windows servers. Not for any strong technical reasons but just because people play computer games on Windows (yes I have heard that used as an argument as to why should stick with Windows) Anecdotally I heard that the same versions of C# libraries are different between platforms which sounds like typical Microsoft . These days if it's not Android development then people would likely use Spring/Spring-Boot framework with which can create a variety of applications. Most people jump on the 'functional programming' bandwagon just because it's the latest thing. My experience of functional programming was a nightmare. It wasn't my application but trying to debug it was a pain as the application was jumping all over the place, and of course none of these 'functions' had any tests because writing tests isn't cool for these hipsters. The new Java FFM is interesting and makes calling native code a lot easier than JNI.
C# doesn't force you to use windows or deploy on windows servers. I think your information on C# might be 10 years out of date.
@@traintocode You didn't read what I wrote: 'Not for any strong technical reasons but just because people play computer games on Windows (yes I have heard that used as an argument as to why should stick with Windows)". And others have pointed out, your information on Java is years out of date.
@@traintocode the irony
Odd that you don't mention Scala
Scala is like to Java what F# is to .NET. I wouldn't compare F# to C# they have different philosophies they aren't meant to replace each other.
Think you spend too much time talking to camera, people lose interest fast, should have simple visual examples and comparisons of each point you're making.
fireship is pretty much the bleeding edge example of how to engage with the information overloaded tech interested audience of today aside from his focus on sarcastic / ironic humor.
I agree that Java is falling out of the sky, since it lacks the hype factor the communities that are behind other languages, it was the big kahuna during early days of corporate growth.
I actually completely agree with this - but man making visuals is extremely time consuming and I can't spend 20 hours on every video. Someone recommend me an AI tool for making visuals and I'll be all over it. Currently I just spend a lot of time clicking around in Resolve to make like 4 graphics.
Being a lone TH-camr with a job and a family trying to compete against actual teams of full time content people is really hard.
Feel out of love? I never liked it to begin with.
The main advantage of Java is platform independence which is a stark contrast to ".Net" or C#. This is a biased video.
.NET is also platform independent
I use C++ and Java quite extensively, your video is about as outdated as the dinosaurs.
As always, such videos are so opinionated... Most of the points in the video aren't even valid, which Java version are you talking about and are you still in the eraly 2000s where Java hardly got updates. JavaScript has more uncalled for libraries and frameworks than any language on earth and you speak of *DECISION FATIGUE* in Java eco system... anyways, looks like this is a C# fanbase channel after all so I didn't expect much.
How come you didn't mention kotlin
Same reason I didn't mention Scala or Clojure really - they run on the JVM but they are distinct languages from Java and it didn't really fit the narrative soz.
@traintocode but kotlin was made specifically to replace java. The number of teams migrating from java to kotlin is probably one of the most important factors. It's like c and c++ or javascript and typescirpt
@@stan4676 That is only for developing on Android.
It was a good video until you started talking about OOP, everything after that sounds like it came from ChatGPT, or the most far fetched sources since it is actually just a lot of false facts in a row. Bro really said that C# is embracing funcional programming over OOP???? That's the nost out of touch thing anyone with (apparently) tech know how have said
I don't think it's out of touch, if you look at all the new C# features from Record types to pattern matching, the language is releasing a lot more "functional programming" type features than OOP oriented ones lately. It's definitely embracing functional programming.
BS
Brilliant Story?
Java tried to force premature refactoring on the industry
nope, that is called Clean Code by Uncle Bob - you can premature refactor in every language
Please, if you don't master something, don't spread fake information about it.
There's a couple reasons why Java is bad.
1. Write once run everywhere is a lie. You cannot run Java on non supported platforms. The user also needs to have rbe java environments on their machine. Compare that to python that does not need to be compiled or languages like Go that only need to distribute the binary.
2. Build strategy. Since Java needs to be built despite being interpreted, you need a build strategy. Your choices are maven and Gradle. Both garbage. Compare to Go or Rust where it's literally one command.
3. OOP is very ingrained into the language so you can't do anything productive easily. There's too many things that are confused in the language. For example, I need to create a separate file for a simple struct. And I need a class for a new namespace. The way Go and Rust do it, with modules is the much better approach.
4. The type system is confusing and not that useful. No tagged unions. Pattern matching is bad. Lambdas and closures are badly implemented. You have to rely on try catch. Type constraints are implemented with inheritance and interfaces which is confusing and not as powerful as traits in Rust for example.
5. A lot of garbage libraries you have to sift through to find something actually useful.
Overall, I think there's zero reason to use Java compared to Go, Rust or Ocaml.
Comparing Java to Python or Go overlooks the ecosystem differences. Python also requires dependencies that may not be installed on all systems, and Go binaries can be large while lacking the dynamic runtime advantages provided by the JVM. The JRE can be bundled with Java applications as well. Additionally, you can't run Python without it being installed locally, so it's essentially the same situation as with most other programming languages. Of course, you can use Docker, virtual environments, etc., but you can do the same with Java, so.. :)
Regarding libraries: RxJava and Spring cover 99% of use cases. You're welcome. :)
Points 3 and 4 are in my opinion personal preferences. I enjoy using Go, but personally, I don’t like Rust. But I can accepth that you prefer those over Java.
But... Mentioning Python as an example of a language that doesn’t need to be compiled is funny when you consider that it can’t even do parallel processing due to the GIL. So, once again, it’s all about your needs and personal preferences. :)
1) You need a python interpreter for your platform. You can distribute java programs as single binaries too, not very (space) efficient, but doable.
2) You can use a build tool, but you don't have to. Maven and Gradle are common options, but not the only ones.
3) Your example is utterly wrong.
4) So how are lamdas badly implemented? Rely on try catch? What are you talking?
There is at least one good reason to use Java compared to anything: If you or your team are majorly experienced in Java. And there a still a lot of Java devs still out there.
1) With Python you also need a runtime and sometimes you need to install modules which require compilation. On Windows that means installing literally gigabytes of compiler tools from Microsoft and then hope the compilation doesn't fail. If you want a truly "write once run everywhere" without a runtime, you need to write a C program and compile it for different OS'es and architectures. And if you're doing anything more than hello world, your code will be rife with ifdefs to account for platform API differences, have fun with that.
2) Granted, build tools sucks, but on the other hand, they suck for many other languages as well. It's not an easy thing to get right. But maven does so much more than just builds, you can make an entire pipeline that runs your tests, reports test coverage, builds your binary just the way you need it, distribute it, etc... You're comparing a simple knife to a Swiss army knife. Furthermore, since Java 11 (released 6 years ago), you can run uncompiled Java classes with one command.
3) You don't need to create a separate file for a struct (nb structs are called records in Java), inner classes/inner records exist. I don't know what you mean with needing a class for a new namespace, namespacing is done via packages but you don't even have to use packages, you can just put everything in the source root if you want to. Comparison to Go and Rust is really just "same but different". Yes the OOP part can be heavy-handed, but choosing your libraries strategically helps a lot with that (as it does in any language).
4) I don't know what you mean. Lambdas and closures work just fine.
5) Like with any other language... Plenty of unmaintained stuff in Go, Rust, Javascript, Python, ...
Overall, I think there's zero reason to take your comment seriously.
wth are you going to do with Ocaml. Good luck finding a job with any of these languages. You can't always get what you want.
1) You cannot run a Go binary build using Linux on Windows. You would have to target it to run on a specific platform.
2) gradle run
3) Only one class needs to be public. You can have multiple classes in one file if you wish.
This video misses the mark. It's not that Java is not the "cool" language, it's that Java is downright unpleasant to work with. There is a lot of cruft, a lot of boilerplate, the tools to work with it are slow, and the language itself lends to some extremely bizarre over-engineering using OO programming techniques. There's also the fact that it's historically been riddled with security issues.
it's actually the non-OO programming techniques like getters/setters that make Java frameworks ugly.. but that's more of a framework than a language problem.
So what exactly are the "extremely bizarre over-engineering using OO programming techniques" you speak of? Some examples?
@@christianibendorf9086I expect they are referring to the gang of four design patterns. For a while every developer was shoehorning design patterns into codebases that simply didn't need it. A lot of that happened in the Java world so that's probably what they are referring to.
@@traintocode But that's not exactly a feature of Java. (-:
"Omg I have to write code" type of comment 😂
any programming language .. container ... JVM useless
Or the 'engineer' is just useless.