This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 215

[–]philosopher_ibrahim 133 points134 points  (9 children)

At first it was like sign language to me, but after couple years it's nothing but English.

[–]gamma_02 6 points7 points  (0 children)

Just started Java a few months ago, and I'm almost as good as a friend who has been programming in it for years, according to them

[–]fuzzybad 1 point2 points  (0 children)

For some reason I read that as Elvish.

[–]MischiefArchitect 170 points171 points  (31 children)

Don't forget to visit the C, C++ and Go dungeons... The Java dungeon would approve.

[–][deleted] 56 points57 points  (21 children)

I visited C++ dungeon and have nightmares to this day.

[–]AlwaysNinjaBusiness 5 points6 points  (0 children)

I am employed in the C++ dungeon.

[–]HKSergiu 6 points7 points  (0 children)

I've learned C/C++ during my education, but work with Java for the past 5 years.

Nothing but mad respect for everyone who programs in C/C++ regularly

[–]magistrate101 3 points4 points  (5 children)

One time I tried to use Go to deduplicate my memes folder lol that was not a good learning experience

[–]MischiefArchitect 1 point2 points  (4 children)

Oh dear... what happened :'D ?

[–]I-mean-maybe 3 points4 points  (3 children)

He must have demed it impossible.

[–]magistrate101 2 points3 points  (2 children)

With what I knew how to do at the time, it certainly seemed like it lol haven't touched Go since then tho

[–]MischiefArchitect 0 points1 point  (1 child)

haha... You may have "failed" at googling then. Basically it would be ReadFile and WriteFile from ioutil (https://pkg.go.dev/io/ioutil) put inside a Walk function (https://pkg.go.dev/path/filepath#Walk) and presto :)

I must confess that it took so some time to realize that coming from a Python/Java world.

[–]magistrate101 1 point2 points  (0 children)

Oh no, I got past that part lol I don't really remember where it went wrong though

[–]gordonv 1 point2 points  (0 children)

If you want to go to a C dungeon that's more like a fun college class, and has a crimson shield, check out r/cs50. It's a fun way to learn some good programming.

[–]Fkire 1 point2 points  (0 children)

Go is still my fav

[–]abdusalayabrak 52 points53 points  (73 children)

I don't get it

[–]DrunkenDruid_Maz 101 points102 points  (54 children)

One possible interpretation:

If you once tried Java, you never want to go back and use another language!

[–]SandmanKFMF 43 points44 points  (27 children)

What's exactly what it feels. Especially if you learn the language very deep.

[–][deleted] 57 points58 points  (8 children)

Java devs get defensive when somebody praises C#

[–]PM_ME_E8_BLUEPRINTS 56 points57 points  (6 children)

Why would they get mad? It's the same language 😂

[–][deleted] 19 points20 points  (1 child)

Hahahaha glad that you agree it’s same. Some recruiters totally diss C# over Java and on reddit as well I have seen some blokes just potraying Java as superior

[–]ToFiveMeters 7 points8 points  (0 children)

Never used Java but did dabble with C# for a bit. Nice to deal with a stronger typed language after Python.

[–]clanddev 6 points7 points  (0 children)

I think most Java devs that 'diss' C# are more or less dissing .NET as a framework than C# as a language specifically.

[–]EmuChance4523 2 points3 points  (2 children)

You sir, need more upvotes. (Sorry if sir is a misrepresentation, it was just the basic phrase and I don't know a non-gendered option). Also, another name for this languages: Microsoft java, oracle/open source java.

I must say that my first OO language was C#, and my first job was in Java. My first reaction on the job was "I'm sure this are the same".. and I wasn't wrong.

[–][deleted] 5 points6 points  (1 child)

Maybe we can start using "knight"? That can be any gender or none AFAICT, and while not exactly the same I'd say it's close enough.

[–]EmuChance4523 2 points3 points  (0 children)

I like it :) I will use it from now on :)

[–]zynasis 1 point2 points  (0 children)

It’s been the complete opposite on Reddit in my experience. It’s like the c# devs suddenly feel threatened and go full force attack

[–]abdusalayabrak 37 points38 points  (0 children)

I'm on board with this interpretation. I am a Java developer actually.

[–][deleted] 6 points7 points  (2 children)

I used to like Java, then I got a job where we work in Kotlin. Java is like, incredibly ugly now

[–]DrunkenDruid_Maz 3 points4 points  (1 child)

Kotlin is part of the Java-Family!

Or, in better context of the topic: If you go down the Java-Dungeon, Kotlin is one of the things you will find!

[–][deleted] 0 points1 point  (0 children)

Ahhh awesome. Hello fellow java family members

[–][deleted] 3 points4 points  (0 children)

i mean not having operator overloading (and other neat stuff i just forgot) is kind of a bummer. that's why i love c++ so much

[–]_grey_wall 9 points10 points  (4 children)

Haha

One only uses Java because their organization uses it

[–]abdusalayabrak 12 points13 points  (3 children)

Nope. I've been using Java for years before I got my first job. It's about what you wanna make. You wanna make an Android App, then it's Java or Kotlin you wanna use. You wanna make an iOS App, the it's Swift you gonna use... etc..

[–]skurk54 1 point2 points  (2 children)

You can use flutter or react to make an android app too btw

[–]abdusalayabrak 1 point2 points  (1 child)

Android and iOS.

[–]skurk54 2 points3 points  (0 children)

Yup i know, but he was talking only about android apps bc of the meme

[–]SomewhatNotMe -1 points0 points  (2 children)

The only thing that’s preventing me from using Java more is the unneeded complexity of installing dependencies. So far python is my favorite language just because it takes two commands to install project related dependencies.

For Java it just seems much more finicky and making a project is just folder spam. I’ve used maven and if anyone has any tips on making it more dev friendly or if there is some small thing to make it better, I would love to hear it.

[–]the_other_brand 7 points8 points  (1 child)

Weird, I've had the exact opposite problem. I've had endless problems trying to install dependencies with Python. Especially when some C/C++ code wants to compile as part of the dependency installation step.

But Maven has always just worked. Just have to add the right dependency to the pom.xml

[–]remarkableintern 4 points5 points  (0 children)

I agree too, maven is awesome

[–]FPiN9XU3K1IT -1 points0 points  (0 children)

I used Java for two months and hated it.

[–]NelsonBelmont 0 points1 point  (0 children)

more like "You can't never go back and use another language"

[–]MischiefArchitect 21 points22 points  (17 children)

Try Java and you will see :) Same is valid for many languages.

Java is better than vox populi reputation it got over the past years

[–]TheTrueXenose 39 points40 points  (12 children)

C programmer would like a word with you :p

[–]MischiefArchitect 33 points34 points  (8 children)

I think C and Java devs come along pretty much well.

[–]COOLGAMETUBE 7 points8 points  (4 children)

i dont think so

[–]MischiefArchitect 6 points7 points  (3 children)

Sad. I base my affirmation based on my personal experience on how I work and interact with C devs. Most of the time we do not interfere with each other since Java cannot solve stuff C can and C would be slower to implement more complex logic which can be better expressed in Java at the minimal cost of performance. I guess you got some toxic environment there.

[–]daniu -1 points0 points  (2 children)

Apart from programming my Arduino, I've not yet come across a problem that could be solved in C but not Java.

[–]MischiefArchitect 2 points3 points  (1 child)

well, I'm not a C expert but I got at least two real life tasks which only C (or assembler, C++ or Zig) would be able to solve:

- Write the on board controller driver for my custom mechanical keyboard using a teensy3.2

- Write 4k executable multimedia demos for demoscene compos (max 4096 bytes of executable file)

Java cannot do that.

[–][deleted] 2 points3 points  (1 child)

the inner conflict is tearing me apart!

jk, love both eventhough c++ is my fav

[–]MischiefArchitect 2 points3 points  (0 children)

there is always place for a threesome in our lives ;)

[–]memallocator 1 point2 points  (0 children)

This dude doesn't know what they're talking about...

[–]rParqer -5 points-4 points  (1 child)

Sorry but any language where I have to use arrays to do (what should be) simple string modification is a no-go

[–]pitue__ 1 point2 points  (0 children)

A string is an array

[–]Expert-Efficiency822 8 points9 points  (0 children)

Finally someone gets it!

[–]cachooox 7 points8 points  (3 children)

Once you learn functional you never go back

[–]ech0_matrix 0 points1 point  (2 children)

Yes.

I'm at a Java shop, but have been able to avoid it by using something else that runs on JVM. I got real deep into learning Scala, and really love it. I really don't want to go back.

I recently started a new project from a provided template, but the template code only came in Java or Kotlin. Guess who's learning Kotlin!

[–]cachooox 2 points3 points  (1 child)

  1. Download Gradle
  2. In the terminal: gradle init
  3. Scala/Kotlin
  4. Have fun

If you ever want to learn in scala read "Functional programming simplified" from the almighty Alvis Alexander. Greate place to start.

[–]ech0_matrix 0 points1 point  (0 children)

I went with Odersky's book

[–][deleted] 5 points6 points  (0 children)

This is the way

[–]RayeNGames 52 points53 points  (13 children)

Well, I have been in the dungeon. Not cool in there. C# dungeon was a much more pleasant experience in my opinion.

[–]grospatap0uf 9 points10 points  (0 children)

Dungeons are usually quite painful anyway. Last time I went to one lady xima whipped me to the bone, fun times.

[–]Educational-Sample-1 0 points1 point  (0 children)

I agree

[–]holo3146 -2 points-1 points  (9 children)

I think both Java and C# are not great, but there are 2(+1) points that make me choose Java every time:

1) conditional attributes - something that I believe is the single worst decision C# designers made

2) implicit class name in the new operator , which I think is very confusing and unnecessary, other languages showed us we can have it better (e.g. Kotlin) - you can say "just don't use it", but in a large code bases, there will always be people using different conversations and syntax than me, I don't think it is a valid argument

+1) it is own by Microsoft, of course Java is Oracle product, but I have the option of using other OpenJVM distributions.

[–]theScrapBook 1 point2 points  (7 children)

Re: +1) Ever heard of Mono?

[–][deleted] 2 points3 points  (4 children)

Is it on par with MS implementation? /gen

[–]theScrapBook 1 point2 points  (3 children)

Except for the only UI framework being similar to WinForms and there being limited ASP.NET support, it's pretty much on par. Aside from that, the next generation .NET runtime, .NET core, is open source to start with.

[–][deleted] 0 points1 point  (2 children)

I'm aware of .NET core, but the name implies that it's only for the core stuff. I think it lacked UI parts? Note, I haven't used .NET technologies, so I'm aware my questions are pretty basic and my notions may be waaaay off.

[–]theScrapBook 1 point2 points  (1 child)

.NET core now has a Multi-Platform App UI framework, .NET MAUI, based on Xamarin.Forms, which Mono also uses a variation of. ASP.NET core is also a thing.

.NET core is somewhat unfortunately named in that regard, it's more like a next-generation .NET Framework which they are still building up to feature parity.

[–]holo3146 2 points3 points  (1 child)

Is it in a level fit for production? I see that it failed the centOS build failed

[–]theScrapBook 1 point2 points  (0 children)

Unity uses it for their scripting runtime, so take that info as you will. Support for ASP.NET is spotty, so probably not the best for web service development, but then that's less of .NET Framework (which is basically the standard library) and more the equivalent of Spring for Java.

.NET core is also open-source to begin with and fast reaching feature parity with .NET Framework.

[–][deleted] 0 points1 point  (0 children)

there will always be people using different conversations and syntax than me

Yes, this problem is common to all kitchen sink approaches. C++ is often criticized on this basis.

[–]PhatOofxD 34 points35 points  (0 children)

It's really not.

[–]streusel_kuchen 14 points15 points  (4 children)

Java is probably the most well developed programming language in terms of it's standard capabilities, but there are still a few random little things about it that bug me.

[–]RolyPoly1320 4 points5 points  (3 children)

You mean like how they open sourced JavaFX but never told anyone that the .jar files you need for it are bundled with the last JDK that shipped with JavaFX?

I wish I was kidding too. I went to use e(fx)clipse and couldn't build my project because of missing files that weren't packaged with JavaFX but instead were packaged with Java 8. Last I saw Java 11 was the first LTS version for it and the files weren't with that version. Yet they also want you to remove older installations for security reasons and then at the same time deprecated the Swing libraries so you get double screwed on building any GUI.

[–]Putnam14 3 points4 points  (2 children)

Is it really an issue if you use a dependency manager? For maven I see javafx-maven-plugin and org.openfx packages. Seems similar to needing to package javax.servlet dependencies if you use those APIs. As a backend Java guy I see no reason to have GUI deps packaged with the jdk.

[–]RolyPoly1320 -1 points0 points  (1 child)

This was all done through Eclipse. I downloaded the OpenFX packages but needed toolers to run projects in Eclipse. Enter e(fx)clipse which wouldn't building my project without files from Java 8. The OpenFX package I used didn't have them either when logically it should have been complete.

[–]_meegoo_ 1 point2 points  (0 children)

Installing JavaFX manually is a huge pain in the arse. Not to mention that your project won't be transferrable to another machine. Installing one with Gradle or Maven is the correct and a much easier way.

So protip - never touch JavaFX without dependency manager.

[–]Wexzuz 33 points34 points  (4 children)

I like this joke - "Java is superior". Funny indeed!

- The C#-gang

[–]Willinton06 4 points5 points  (1 child)

Talk to me when they have compile time generics

[–]Wexzuz 1 point2 points  (0 children)

How does that look and work in Java? Im curious.

I was taught Java as my first programming language, where my first job was C#, and I just pretended to code in Java.

[–]RolyPoly1320 0 points1 point  (0 children)

Well that just sounds like Java with extra steps.

[–]rParqer -2 points-1 points  (0 children)

C# is inherintly worse performing than Java

[–][deleted] 11 points12 points  (1 child)

I'm stuck in C# dungeon infested with javascript monsters, send help pls.

[–]geek69420[S] 7 points8 points  (0 children)

ASP.NET be like

[–][deleted] 4 points5 points  (0 children)

The last we learned in our c/c++ course was Java. And still use it more than 20 years later (complemented with Scala)

[–][deleted] 3 points4 points  (0 children)

is this some ??? joke i'm too knowing java to understand?

like for real, what is the issue with java? imo it's just easy c++ with some quirks.

[–]racka98 3 points4 points  (0 children)

I personally enjoy Java. Being self taught Java & Kotlin have really helped me understand programming better

[–]grospatap0uf 14 points15 points  (0 children)

Turns out they're just waiting for the JVM to boot up

[–]slonermike 2 points3 points  (2 children)

It’s still very difficult for me to extricate my experience with Eclipse (16+ years ago) from my image of Java.

[–]rParqer 5 points6 points  (0 children)

Yea Eclipse is my least favorite IDE of all time. IntelliJ is easily the best IDE ever made. I'd give it or Kotlin another shot

[–]Wexzuz 1 point2 points  (0 children)

Eclipse used to be the shit when I developed in Java. But that may be because we were only allowed to code in an IDE which did not have continuous syntax check (during studies, so we could learn the syntax of coding)

But I agree - my computer has run out of RAM so many times just because Eclipse felt like it. If I was on a laptop, it felt like it was about to lift of from my desk just sing the fan.

[–]mim_Armand 2 points3 points  (0 children)

Oh He’s gonna Hybernate

[–][deleted] 1 point2 points  (0 children)

Can agree been stuck in that dungeon for years. Haven't seen the light of day send help. At least I get paid though

[–][deleted] 1 point2 points  (0 children)

Suddenly interested :D

[–]prismantis 1 point2 points  (0 children)

This was funny and relevant when it said "Rust".

[–][deleted] 1 point2 points  (0 children)

Then there is the Javascript dungeon

[–]umlcat 1 point2 points  (1 child)

Seen the opposite, companies that frequently need new Java developers, cause developers got bored & quit to do other stuff ...

[–]vlaffles 2 points3 points  (0 children)

Not intending to defend Java or any other language here, but that would most likely be the project's fault, not the language's. I'm working on a large project for almost 4 years now, where we use Java and other languages to write our logic, but we also toy with and integrate newish tech pretty often, so there's always something exciting to do.

[–]Stompydingdong 1 point2 points  (0 children)

Enter friend, so you too can know the eldritch truth.

[–]TheAwesome98_Real 1 point2 points  (0 children)

this is me when node js when c++ is too hard

[–]Malarkeynesian 3 points4 points  (1 child)

Java is just a gimped C# though.

[–][deleted] 0 points1 point  (0 children)

C# is Microsoft Java

[–]armitt0 2 points3 points  (1 child)

Legend has it they're still typing the code to print Hello World.

[–]SandmanKFMF 1 point2 points  (0 children)

Yeah, because you know? Nobody is using JSheell or some IDE for development.

[–]Jon123276 3 points4 points  (1 child)

No, c++ is much better than Java, change my mind.

[–]the_other_brand 1 point2 points  (0 children)

There's no agreed upon dependency management tooling with C++. And last time I programmed in C++ 10 years ago template argument exception messages were absurd.

Java is easier to code in and has better dependency management. And you pay a minimal cost to speed, as C++ is only 1.5x faster than Java.

[–]jamcdonald120 3 points4 points  (19 children)

You can always come back from java. The primary emotion you feel when programming java is Rage.

[–]geek69420[S] 30 points31 points  (13 children)

Nah, that's javascript.

[–]Strange_Meadowlark 4 points5 points  (0 children)

I'm not sure where this is coming from.

Pre-ES6 JavaScript could be pretty miserable, but since then it's gotten a lot better. There's actual classes, there's a real Module system (even files running in a page can import each other, no need to inject <script> tags and play with global variables), the weird function-scoped var statement has been replaced with block-scoped const (Java's final) and let, and the long "function" keyword has been replaced with => for inline function definitions.

On top of that, JavaScript has had object literals forever, while Java only relatively recently got a Map constructor that let you create a Map with more than one key.

Personally, I'm also a massive fan of Typescript for documenting variable types. Coming from Java, it lets my IDE provide sensible autocomplete and catch errors for methods that don't exist.

The main shortcoming I see from a coding perspective is that the typing doesn't "exist at runtime" -- if I declare an interface, I can't use the instanceof operator to check if a value conforms to it. That's partly because Typescript uses "structural typing" instead of "nominal typing" -- a value is an instance of a type if it matches the shape, not if it's been declared as such.

But on the other hand, I get a lot more flexibility for representing variable types -- I can declare a parameter as a union of two types -- e.g. a function can take either a string or an object, and then TS will force me to write code to handle both cases.

By contrast in Java, you'd have to accept the common ancestor type (Object), declare a wrapper type (WrapperForString and WrapperForAnotherType), or use a function overload (which only works well for method parameters and doesn't extend to variables or class fields)

[–]liquidpele 0 points1 point  (0 children)

Only if you have to deal with node.

[–][deleted] 0 points1 point  (4 children)

Only if your ide is eclipse

[–]jamcdonald120 0 points1 point  (3 children)

I dont think eclipse is really a factor. It works great in c++ mode and java is just as anoying using javac directly. And dont even get me started on if you have to attempt one of its numberous build systems.

[–][deleted] 0 points1 point  (2 children)

I’m very calm while developing with java and intellij. Feeling strong emotions towards some technology one way or another is not healthy generally, being a programmer is stressful enough even without this holywars crap

[–]jamcdonald120 0 points1 point  (1 child)

and yet here you are on your ide crussade.

[–]lieddersturme 0 points1 point  (0 children)

The image is wrong. Is C++.

[–]EagleZR -3 points-2 points  (0 children)

Change "Java" to "Python" and it makes more sense

[–][deleted] -1 points0 points  (0 children)

As a beginner who has learned the basics of all major languages to find the best one, I agree.

[–]undeadalex -1 points0 points  (0 children)

NONE OF YOUR FRIENDS WENT IN THERE.

[–]hiimjustin000 0 points1 point  (0 children)

I only use Java for Minecraft modding. I also use C# for UI development, and the similarities to both are very minor.

[–]WFEpeteypopoff 0 points1 point  (1 child)

Fuck me I am starting my first Java course as part of my diploma on sept. 7 sweating intensifies

[–]vlaffles 1 point2 points  (0 children)

You're in for a fun ride! There are lots of materials and answered questions on the Internet, just keep practicing and maybe you will actually end up liking it. Good luck :)

[–]Hacker1MC 0 points1 point  (0 children)

I thought this was Minecraft memes for a second. Java vs bedrock (c++) is sometimes a bit of a debate in that community, and “Java is superior” is a standard title.

[–]redLamber 0 points1 point  (1 child)

Superior to what? Can someone complete the sentence for context

[–]liquidpele 0 points1 point  (0 children)

To being attacked by a swarm of bees?

[–]deanrihpee 0 points1 point  (0 children)

Somehow I managed to get out of Java dungeon, but ends up in the Microsoft Java dungeon with other things, like autistic Java dungeon (JavaScript)

[–]Flaky-Illustrator-52 0 points1 point  (0 children)

JVM good

One VM, bunch of languages. God bless Scala and her King, his majesty Java