795
top 50 comments
sorted by: hot top controversial new old
[-] Drz@feddit.uk 4 points 9 hours ago
[-] Batman@lemmy.world 23 points 19 hours ago

My inner mathematician respects Java. The first step in any problem is defining your universe

load more comments (1 replies)
[-] mlg@lemmy.world 14 points 18 hours ago

Forgot the JVM eating the entire machine's RAM for breakfast

[-] nova_ad_vitum@lemmy.ca 15 points 17 hours ago

JVM is like a gas. It expands to fit it's container, however large that is.

[-] lurklurk@lemmy.world 23 points 20 hours ago

Hello World

30 minutes of boilerplate

writing imports

$ cat <<EOF > Hello.java
public class Hello {
  public static void main(String args[]) {
    System.out.println("Hello world!");
  }
}
EOF
$ java Hello.java
Hello world!

ok

[-] sugar_in_your_tea@sh.itjust.works 14 points 18 hours ago* (last edited 18 hours ago)

Python:

print("Hello world!")
[-] dch82@lemmy.zip 8 points 18 hours ago* (last edited 18 hours ago)

C:

#include <stdio.h>

int main() {
    printf("Hello World!");
    return(0);
}

EDIT: POSIX-compatible shell:

echo "Hello World!"
[-] derpgon@programming.dev 2 points 7 hours ago
[-] PushButton@lemmy.world 1 points 4 hours ago

Rust:

Still fighting the burrito check fil er
load more comments (2 replies)
[-] MooseTheDog@lemmy.world 18 points 20 hours ago

Welcome to java, we have a couple unconventional ways of doing things, but overall I'm like every other mainstream oo language.

People: AHH! Scary!

Welcome to python. your knowledge of me wont help you elsewhere as my syntax is purposefully obtuse and unique. Forget about semicolons, one missed space and your code is as worthless as you after learning this language.

People: Hello based department

[-] Classy@sh.itjust.works 7 points 19 hours ago

Oh my god I got fucked by a python script once because of a single space. It took forever to figure out what went wrong

[-] TonyOstrich@lemmy.world 2 points 9 hours ago* (last edited 9 hours ago)

I refuse to code in Python without a really good IDE and linting like PyCharm. When using PyCharm it's very rare I have issues like this, because it catches them in one way or another, but I notice it catches those kinds of issues a lot when I'm coding soooooooo....

I have also setup the IDE to specifically color code comments like

' # End If and ' # Next

in the same style as their beginning statements as I find it much easier to visually scam through code when they are present.

[-] JackbyDev@programming.dev 3 points 16 hours ago* (last edited 16 hours ago)

**kwargs

"No, I don't use type annotations because they don't actually do anything. In fact I purposefully give this parameter different types for different behaviors. How is that confusing?"

load more comments (2 replies)
[-] JackbyDev@programming.dev 5 points 16 hours ago

This is getting a little better nowadays.

> cat Hello.java
void main() {
    System.out.println("Hello, World!");
}
> java --enable-preview Hello.java
Hello, World!

Things to notice:

  1. No compilation step.
  2. No class declaration.
  3. Main method is not public static
  4. No String[] args.

This still uses preview features though. However, like you demonstrated already, compilation is no longer a required step for simplistic programs like this.

[-] Valmond@lemmy.world 1 points 3 hours ago

System.base.stuff.output.out.printfunctions.println

Or so it felt every time you wanted to dump something into the console...

[-] PanArab@lemm.ee 1 points 8 hours ago* (last edited 8 hours ago)

Main method is not public static

It must be somewhere under the hood. Otherwise, it wont be callable and it would require an instance of an object to call. Unless the object here is the Java environment?

No String[] args

They are just optional I'm sure, like C and C++. You still need them to read command line arguments.

All in all, these syntax improvements are welcome. I already moved on to Kotlin for Android development though.

[-] JackbyDev@programming.dev 1 points 7 hours ago* (last edited 7 hours ago)

Main method is not public static

It must be somewhere under the hood. Otherwise, it wont be callable and it would require an instance of an object to call. Unless the object here is the Java environment?

No. From JEP-445:

If an unnamed class has an instance main method rather than a static main method then launching it is equivalent to the following, which employs the existing anonymous class declaration construct:

new Object() {
    // the unnamed class's body
}.main();

No String[] args

They are just optional I'm sure, like C and C++. You still need them to read command line arguments.

Without the preview feature enabled, it is not an optional part of the method signature. It specifically looks for a main(String[]) signature.

[-] PanArab@lemm.ee 1 points 7 hours ago

I am not in the mood to read a technical document, but I don’t think the resulting binary/byte code should be different between the two “hello world” programs. But then again, why not?

Without the preview feature enabled, it is not an optional part of the method signature. It specifically looks for a main(String[]) signature.

Ah ha! So that’s what’s going on here. They almost got it right. They had the potential to make a lot of the boilerplate optional or implicit under relevant circumstances, but instead the language has two explicit switchable modes.

Can I write a Java application in “preview feature”?

[-] JackbyDev@programming.dev 3 points 6 hours ago* (last edited 6 hours ago)

I mentioned this uses preview features twice in the first comment regarding this, so I don't know why you're "ah ha"ing. Also you don't need to read the technical document, I've quoted the entirety of the relevant text. I provided it as a citation.

You seem confused about preview features. It's not a switchable mode to reduce boiler plate. I find the name very clear, but here is more information. From JEP-12

A preview feature is a new feature of the Java language, Java Virtual Machine, or Java SE API that is fully specified, fully implemented, and yet impermanent. It is available in a JDK feature release to provoke developer feedback based on real world use; this may lead to it becoming permanent in a future Java SE Platform.

As an example, JDK 17 added pattern matching for switch statements as a preview, and by JDK 21 it was added as a full fledged feature that doesn't require usage of the enable preview flag. Presumably in some future release of Java this feature will not require the usage of a flag.

[-] PanArab@lemm.ee 1 points 6 hours ago* (last edited 6 hours ago)

It is pretty late for me. Sorry. And thank you for your patience. Repeating it three times helped.

I will be interesting to find out if the resulting binary is the same or not and what’s possible once it matured.

[-] JackbyDev@programming.dev 2 points 6 hours ago

Yes, because it's genuinely not a static method. It's an instance method. Also the signature is different. It's not some sort of mere syntactic trick that translates void main() to public static void main(String[] args).

[-] cashew@lemmy.world 3 points 13 hours ago* (last edited 13 hours ago)

Microsoft Java is a one-liner these days.

> cat program.cs
Console.WriteLine("Hello, World!");
> dotnet run
Hello, World!
load more comments (2 replies)
[-] kerrigan778@lemmy.world 5 points 17 hours ago

Java is terrible and I hated it but I feel like this stuff is not why, this mostly just seems like stuff that most powerful object oriented languages do.

[-] JackbyDev@programming.dev 4 points 16 hours ago

Java is amazing and I love it, and I agree that this is not really a good list of problems. (Not that I expect green texts to be well thought out, rational, real, fair, or anything other than hyperbolic rants lol.) There are good reasons to critique it and the ways people use it, but this isn't it.

Particularly funny is the one about race conditions. That's something you'd have to deal with in any sort of multi threaded environment.

[-] shasta@lemm.ee 1 points 10 hours ago* (last edited 10 hours ago)

Maybe they got confused and assumed it would run on a different cpu? Is there another language that does it that way? No, now I'm confusing myself.

[-] JackbyDev@programming.dev 1 points 6 hours ago

Various languages have various features to make multi threading/concurrent programming easier. Without knowing what language the green text is fanboying for instead of Java it's hard to know what their specific gripe is. Supporting true multi threading out of the box has always been a priority of Java so I don't know what they're complaining about. Generally languages that people praise over Java like Python and JavaScript do not feature true multi threading. (Although Python is getting closer or there now that the GIL is optional.)

[-] Zementid@feddit.nl 12 points 21 hours ago

I really enjoyed the text.

From the perspective of a python programmer it all seems valid.

A Java-Dev would probably write the same about an embedded engineer.

[-] MajorasMaskForever@lemmy.world 6 points 18 hours ago

As embedded dev, the stack trace alone scares me. It would be funny to watch the Java runtime blow the 8 frame deep stack on a PIC18 tho

[-] sugar_in_your_tea@sh.itjust.works 4 points 18 hours ago* (last edited 18 hours ago)

Honestly, I prefer C to Java, it's incredibly simple without all the BS that Java throws at you:

  • interfaces - compiler will fail if you provide the wrong types; w/ Java, figuring out what types to pass is an effort unto itself
  • functions - everything needs to be in a class; even callback functions are wrapped in a class (behind the scenes if you use modern Java); in C, you just pass a function
  • performance - Java uses a stop the world GC, which can cause issues if you have enough data churn; in C, you decide when/if you want to allocate or free memory, no surprises

There are certainly some bad parts, but all in all, when I run into an issue in C, I know it's my fault, whereas in Java, there are a million reasons why my assumptions could be considered valid, and I have to dig around the docs to find that one sentence that tells me where I went wrong w/ the stuff I chose.

That said, I prefer Rust to both because:

  • get fancy stack traces like I do in Java (I really miss stack traces in C)
  • compiler catches most of my stupid mistakes, Java will just throw exceptions
  • still no stupid interface hell, I just satisfy a specific trait and we're good
  • generally pretty concise for what it is; I can rarely point to a piece of syntax and say it's unnecessary

I use:

  • Python - scripting and small projects
  • Rust - serious projects or things that need to be fast
  • Go - relatively simple IO-heavy projects that need to be pretty fast
  • C - embedded stuff where I don't want to mess w/ the Rust toolchain

Java has been absent from my toolbox for well over a decade, and I actively avoid it to this day because it causes me to break out in hives.

[-] NakedGardenGnome@lemmy.dbzer0.com 1 points 3 hours ago

For over a decade?

In the last decade java finally is starting to catch up! The latest java releases have finally given us the ability to pass through a function, and work more functional.

And you can choose any GC you want, even less "stop the world" ones, but who got the time to figure out which GC they actually want... The memory allocation from C is what haunts my dreams more than the GC from java.

Still, I really want to give Rust a look, if only I gave myself enough time.

load more comments (1 replies)
[-] yamanii@lemmy.world 6 points 18 hours ago

I still think Java is good for teaching newbies precisely because it will throw an error quickly if they are doing it wrong.

[-] DerArzt@lemmy.world 6 points 16 hours ago

Rust over there like

Hey kid, tired of putting off your problems?

[-] kerrigan778@lemmy.world 5 points 17 hours ago

So will so many better languages, more so actually.

[-] Blackmist@feddit.uk 4 points 18 hours ago

So will pretty much anything except JS.

[-] stetech@lemmy.world 3 points 12 hours ago

Arguably there’s Typescript now, too.

[-] Malfeasant@lemm.ee 7 points 20 hours ago

Must be several years old - otherwise, javafx deserves quite a bit more ire.

load more comments
view more: next ›
this post was submitted on 13 Nov 2024
795 points (96.2% liked)

Greentext

4384 readers
1344 users here now

This is a place to share greentexts and witness the confounding life of Anon. If you're new to the Greentext community, think of it as a sort of zoo with Anon as the main attraction.

Be warned:

If you find yourself getting angry (or god forbid, agreeing) with something Anon has said, you might be doing it wrong.

founded 1 year ago
MODERATORS