Sponge's Language Level

So,

What language level of Java should Sponge be developed in? 1.6, 1.7, or 1.8?

All of my plugins were using 1.7 (multi-catch, diamond interfaces[sp?]). But do you think it’s time we started using 1.8 (lambda expressions, etc, reduced final declaration necessity)?

http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html

2 Likes

Definitely not 1.8, because some people don’t know how / don’t want to update their Java.

I’d just keep it at whatever Minecraft stays at. :3

I’ve been using Java 7 to run Java related things for the past couple years, but they currently using 1.6, as that’s what Minecraft uses.

1 Like

Just as Bukkit did, Sponge should be running at the version that is required by Minecraft.

4 Likes

I remember reading somewhere that one of the devs mentioned that sponge would be using Java 1.6. I am pretty sure that is what they are going to be using for sponge api and plugins, but I am not entirely sure. Correct me if I am wrong.

Sponge will be compiling against Java 1.6.

I believe this is because both Minecraft and Forge are also compiled against 1.6.

Making everything update to 1.7 or 1.8 wouldn’t be a horrible idea, but as @Phase said, too many people don’t know how or don’t want to update. Why they wouldn’t want to is beyond me.

1 Like

Not sure if it’s an issue of people not “wanting to” or people just not bothering since everything works fine under JRE6

With every major release comes security and performance enhancements. Everything works fine under JRE6, but why not update?

As shown here, the majority of servers are running on JRE7:
http://mcstats.org/global/

Of course, that doesn’t mean that’s the same for players, but as far as servers go, JRE7 is the primary version.

5 Likes

Yep. I agree that it should be the standard, hell - I have production servers running on 1.8. I’m just saying that it’s not a matter of people making a conscious decision against it.

I only have 1.7 installed on my system to ensure compatibility with something that, for whatever reason, won’t work on 1.8.

Perhaps one day everything will be updated to 1.7 or 1.8. As long as there’s some sort of warning telling players that they’re running a version that soon won’t work, there shouldn’t really be any issues. Maybe in Minecraft 2.x we’ll see a more up to date version.

please keep in mind that we aren’t only targeting servers here – sponge works on the integrated server/lan mode as well.

1.8 is a terrible idea until it is listed on java.com (implying oracle thinks it is stable).

Forge/FML/Vanilla all compile to 1.6, sponge will be doing the same

2 Likes

At least the Java 8 JDK is already being distributed. I agree that it shouldn’t be the standard that people are developing for, but it has been in the works since 2011, so it’s at least a bit stable by now.

I understand Oracle doesn’t see 1.8 as stable as 1.7, and I understand why Sponge is compiling against 1.6. All I’m saying is that, at some point, there should be a unanimous update to whatever the latest stable build is.

I know that it’s out of Sponge’s power to dictate what version vanilla Minecraft is compiled against, but hopefully Mojang (and now Microsoft) is considering the update to at least 1.7.

That point will be when Minecraft updates to Java7.

Right, which I’m hoping will happen starting Minecraft 2.x.

I wouldn’t be all that surprised if it was sometime over the next year when they officially move MC to 1.7.

I actually made a Bukkit plugin using 1.8, back when I was a nub in my first days of Bukkit programming. I liked it because when I made runnable cool downs (again, I was a nub), I didn’t have to worry about modifying final variables. Unless I’m mistaken, final variables are not necessary in 1.8, which makes coding runnables a lot easier.

Because we compile for 1.6 doesn’t mean running 1.7 or 1.8 won’t give you the benefits.

I believe Ubuntu, etc. still have 1.7 as the latest version of OpenJDK.

Sponge will be compiled to run under 1.6.

I develop all my plugins under 1.7. I’m not so interested in supporting as far back as 1.6 myself.

1.8 is too new and I fear too breaking to be adopted yet.

1 Like

I don’t mind you using 1.6.
However I’ve decided to compile against 1.7, because

  1. 1.6 reached it’s EOL (End of Lifetime)
  2. There’s no reason not to update
  3. Diamonds (new ArrayList<>() instead of new ArrayList<SomeClass>())
  4. try-with-resources (try( File fp = new File("path") ) {...})
  5. multi-cache (like try(...) {...} catch( ArrayIndexOutOfBoundsException | NullPointerException ex ) {...} )