I just read a rant about Java by a guy who moved from JS/python.
FFS, until now you were using some aberration of OOP by creating "objects" and making them however you want instead of sticking to concept of blueprinting and managing your classes in a way shit happens properly.
Yes, I do hate js/python-like langs if I would have to do something big in them, because I need to constraint my program so it works predictably every time. I don't feel like I'm doing that by putting some arbitrary key-value pairs into some random object :v
Java and her sexier sister Kotlin ftw and nothing gonna change my mind <3

  • 7
    I've used Java nearly since day 1 (for around 20 years now). Core Java is pretty much my #1 forte. There's certainly many valid criticisms of it: the amount of boilerplate required really should have been cut down by now for instance (lombok's popularity is testament to that), the Java 9+ module system is poorly thought out & implemented, packages should really have been hierarchical wrt. permissions, there's no reason not to special-case BigInteger and BigDecimal by providing built-in operator overloading on those types... I could go on.

    That being said, out of all the articles criticising Java out there, I rarely find a *good* one. They're usually on the lines of either "OMFG Java is like soooooo behind the times I can do <x> so much easier in <y>, what a pile of crap" or "OMFG why can't I just randomly add methods at runtime to arbitrary classes, I could do that in JS, what a pile of crap, I have to use this reflection thing to do that and it's like soooooo annoying and cumbersome"
  • 2
    Java is slow, look at Android !

  • 2
    You could create a massive class called "MyObject" and put all methods and properties in that class for every object you ever need. Does that mean Java isn't real OOP? No.

    Prototypal OOP is real OOP just as classical OOP is, and both can be abused.
  • 3
    @rendezvous That's where TypeScript comes forward
  • 0
    @kamen It saddens me that typescript isn't more commonly used.
  • 0
    @AlmondSauce Angular and React adopted it, that's a pretty big step already if you're asking me.
  • 0
    var f = new Number(5)
    f.someFunc = function() { console.log('hello') }

    Here you go.
  • 0
    @AlmondSauce I would have been truly surprised if JPMS worked properly 😁 considering who were the architects of this feature..., I wouldn't want to shoot myself in the head either [just like they didn't!] :)
  • 0
    @AlmondSauce compared to C# I understand most of those complaints. Reflection and the like are way easier in C#. When I do Java I feel as if I am writing at least double the lines of code of what I would do in C#
  • 1
    @netikras Eurgh, don't start me. The time, effort and resource that went into it, that could have been better spent almost anywhere else, is staggering.
  • 4
    the best part about java is that it runs on 6 quadrillion devices and is totally not owned by an evil corporation or going obsolete
  • 0
    at least you can parrallelize stuff nicely in Java.
    it has a bit of everything, some stuff could be better though
  • 1
    @AlmondSauce yepp.. The original jpms [osgi] is much, much beter :) took me 4 days of experimenting with jpms to realize that 😁
  • 0
    The problem with modifying shit in memory (no love for prototype based languages and rightfully so), is that you have to debug your knowledge of the program during runtime, instead of being able to grok it from plain source.
  • 1
    Right. Java. Where you need 7 (!!) lines minimum to declare a property.
    It’s step down even from javaScript
Add Comment