(Please, keep it professional.)
First, I will start in saying that I am not a programmer or work in the industry. I'm more of a wandering wonderer+gamer. With a bit of a motivation to learn Computer Science sooner or later.
The question is in regards to gaming. And the benefit that I just realised about software/games that run on a Virtual Machine. And how, In my opinion, one platform that seems to be the better choice, keeps getting ignored.
As I have been using the Windows 8 Consumer Preview, I realised that only Java, Flash and BYOND games are working on the OS that ''should support everything that Windows 7 did". What they all have in common? They run on Virtual Machines. All the other FTP MMO type games that I play broke, gave me a software crash or even a whole OS crash restart. Last of which Windows 8 treated well, on my perception. (Win8 found risk->Restart->Error log->SendtoWin)
As a VM, I know it uses more memory than ''native'' running software. But with the amount of memory we have now days, is that even an issue?
And even if the performance is lower, how does this impact games that are not FirstPersonShooters, racing or that require pin point precision?
As I see it, most games don't require such real-time accuracy.
And then we have Flash, same thing as Java. Pretty much. But turned out to be much more popular for games, tho simple games. Yet, finally with Hardware GPU support, its being looked at even more for gaming now.
And now and in the near future, there's HTML5+JavaScript+WebGL+WebCL. But with all the browser fragmentation and issues, how is that a viable platform?
What I'm trying to say here is, Java, from the start, seemed more capable than Flash, for gaming(RuneScape,Jake2). Yet, it didn't become as popular. Now, Java has better example of games, Wakfu(?), Spiral Knights, Minecraft, etc...Yet, there is more focus on Flash than on Java, as a gaming platform. And ''we'' are moving towards the whole HTML5+JS gaming platform which is less capable and more fragmented and ignoring Java again.
Unreal will run on Flash, Unity will run on Flash, HTML5 and have their own browser plugin. Why no Java support?
My question remains, what went wrong with Java? Why has other technologies with the same weaknesses or worse, been used more than Java? And why do you not see Java as a worthwhile platform for gaming?
-Yes, this seems that I am pro-Java. Which I am, but only and just currently(Win8CP) because the games running there look and feel better.-
What went wrong with Java?
a large part of the appeal for flash is that it makes development easy, Java doesn't to the same extent (It is better now with a few solid game engines available though), This is pretty much what caused Flash to dominate the web early on (Making flash games, animations, etc were relativly quick, cheap and easy).
Today Flash has a huge installbase advantage over Java and it matters far more than anything else, people in general will not download a big JVM just to run your game, Most allready have flash installed though which means that the game will simply work.
The only reason i can see to use Java is to be able to take full advantage of for example OpenGL4.1/D3D11 (Which you cannot do with Flash yet) but for webgames this isn't really a big advantage.
Basically Java has lost the web race, Flash has won and the only possible contender for Flash is HTML5/JavaScript (as it will be supported out of the box by most browsers in the future), The only way for Java to get back as a contender for the web is by getting pre-installed on most machines, (Which pretty much means that Microsoft would have to bundle it with their OS, something which is quite unlikely to happen now)
Today Flash has a huge installbase advantage over Java and it matters far more than anything else, people in general will not download a big JVM just to run your game, Most allready have flash installed though which means that the game will simply work.
The only reason i can see to use Java is to be able to take full advantage of for example OpenGL4.1/D3D11 (Which you cannot do with Flash yet) but for webgames this isn't really a big advantage.
Basically Java has lost the web race, Flash has won and the only possible contender for Flash is HTML5/JavaScript (as it will be supported out of the box by most browsers in the future), The only way for Java to get back as a contender for the web is by getting pre-installed on most machines, (Which pretty much means that Microsoft would have to bundle it with their OS, something which is quite unlikely to happen now)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
The voices in my head may not be real, but they have some good ideas!
Today Flash has a huge installbase advantage over Java and it matters far more than anything else, people in general will not download a big JVM just to run your game, Most allready have flash installed though which means that the game will simply work.
This info made me search a bit deeper into the subject of a ''big JVM download''. Yes, it is bigger than Flash. Flash being 6MB(from looking at my Control Panel). But the Java Runtime Enviroment, which, is all you need to run Java applications, is just shy of 20MB. But considering the median 3mbps download Internet Speeds of the United States in 2010 by a report from Speedmatters.org, does it really matter? And the U.S is ranked 25th worldwide by its connection speed, by that report. Lets see some numbers...
Theoretically, downloading 20MBs takes anywhere from:
- 8mins @ 512Kbps
- 4mins @ 1Mbps
- 2mins @ 2 Mbps
- 30secs @ 8 Mbps
- 10secs @ 20 Mbps
- 5secs @ 50 Mbps
So, most people will only wait for a couple of minutes. A bathroom break really. And developers can put the JRE seemlesly with the game, I belive. So, will a consumer even notice? They are downloading the game after all, already over hundreds or thounsands of MB is size, what's 20MB more?. And I doubt most people even care about what the game needs, as long as it works, its easy and fun. Virtual Machines deliver on this, no? Atleast on my current case, where everything else doesent work, yet my ''VM running'' games do, it seems to work. Thinking for a moment, to me, if I were a developer, I would still be making money on my VM(Java,Flash,BYOND) running game.
The only reason i can see to use Java is to be able to take full advantage of for example OpenGL4.1/D3D11 (Which you cannot do with Flash yet) but for webgames this isn't really a big advantage.[/quote]
I have read that the DX11 is ''nicer to use'' and can be tiered down to work on DX9 class hardware, If this is true. Just from the fact that its ''nicer to use'', would make it a good choice. IMHO (I dont know anything about DX or OGL programming)
---
This ''awakening'' or realisation that I have had for the past few weeks have really pushed me towards Java. Not Flash, because of bad experiences with it, it crashes alot...alot. As in, almost everyday, multiple times a day. Not sure why and don't want to even figure it out. Where does it crash? Youtube videos, maybe its my Firefox?. Thank god for HTML5 on some videos! I have even uninstalled it on occasions but some videos only ran with it.
Anyways, I just want to know what programmers, developers or even some game companies think about Java or Virtual Machines to run your games in and write applications with. I'll probably act upon this temptation and start learning Java.
Please respond with more input, views, experiences and/or suggestions.
Meh. There's nothing wrong with Java. I've been using Java all the time to make mobile games and apps. Not just Android, we are talking about J2MEs here with 512KB memory and probably a processor that's as fast as your TI calculator. There's nothing wrong with it. The only downside about J2ME VMs is different phone manufacturers produce different VMs with different behaviors, but that's not even the case anymore with PC and Android.
Programmers are paranoid people. One barks "No Java", the rest follows, fearing that extra 0.01% VM penalty hit will somehow reduce their game ef-pee-es from 100 to 1. It's actually not the platform to blame, but the code. Efficient C++ code is not the same as efficient Java code. You just have to know what's good practices and what's not, in Java.
With smartphones now, phones that are faster than PC from 10 years ago, programmers can slack some more and wont suffer much performance hit. I've seen horrendous Android code, but somehow it doesn't seem to suffer much performance hit.
Regarding Flash vs Java, that's no brainer. Flash dominates Web more than Java (you are talking about Applet here?). I'm not sure for what reason, but I don't think it's because Java faster than Flash (or vice versa), but just a matter of preference. I know a couple of Flash developers, and they both also happen to be artists. I think Flash developer tools are more friendlier to artists, who just happen to dominate Flash animations and games industry?
Programmers are paranoid people. One barks "No Java", the rest follows, fearing that extra 0.01% VM penalty hit will somehow reduce their game ef-pee-es from 100 to 1. It's actually not the platform to blame, but the code. Efficient C++ code is not the same as efficient Java code. You just have to know what's good practices and what's not, in Java.
With smartphones now, phones that are faster than PC from 10 years ago, programmers can slack some more and wont suffer much performance hit. I've seen horrendous Android code, but somehow it doesn't seem to suffer much performance hit.
Regarding Flash vs Java, that's no brainer. Flash dominates Web more than Java (you are talking about Applet here?). I'm not sure for what reason, but I don't think it's because Java faster than Flash (or vice versa), but just a matter of preference. I know a couple of Flash developers, and they both also happen to be artists. I think Flash developer tools are more friendlier to artists, who just happen to dominate Flash animations and games industry?
Regarding Flash vs Java, that's no brainer. Flash dominates Web more than Java (you are talking about Applet here?). I'm not sure for what reason, but I don't think it's because Java faster than Flash (or vice versa), but just a matter of preference. I know a couple of Flash developers, and they both also happen to be artists. I think Flash developer tools are more friendlier to artists, who just happen to dominate Flash animations and games industry?
Well, I'm just talking about Java as a game platform. Applets seem like a part of it as RuneScape(I think) and Spiral Knights can run from an Applet, but with Spiral Knights I can put the game on my desktop. And Wakfu is client/desktop app. Reading about Java Web Start it seems to be what I was talking about earlier about deploying the JRE with the game.
"Using Java Web Start technology, standalone Java software applications can be deployed with a single click over the network. Java Web Start ensures the most current version of the application will be deployed, as well as the correct version of the Java Runtime Enviroment."~ from the Java site
After reading this, makes me wonder what's the point of Applets for games?
I understand that Flash is ''everywhere''. But the points that make Java ''bad'':
- Big JVM
- RAM Hungry
- Not ''everywhere'' like Flash
Seem to be non existent anymore, as off 2010 or before that even.
We have the connection speeds to get the runtime in minutes, we have enough RAM and thanks to those two, it can be ''everywhere''.
My almost 5 year old laptop is dual core, has an ATI IGP and 2GBs of RAM. My moms almost 4 year old small factor desktop is dual core, has a very cheap old nvidia card and 4GBs of RAM, it was a cheap system at the time.
It just seems to me that using a VM(Java,Flash,C#) is not only viable, but it would be silly not to.
In another way I'm also saying, if you are not a AAA developer why not use a VM and even if you are, depending on the game, why not use a VM?
Looking it at the future and in the sense of business and making money.
Everytime an OS update comes out, my game would break, probably.
When Vista came out, my XP games broke. Patch, ok. Win 7 came out, broke again. Patch, maybe ok.(Some games don't run well anymore)
And now with Win 8, game breaks again, even when Microsoft said that everything should work. I know its a Consumer Preview, but whats the guarantee that it will work when it ships? Or after? So in a sense, if I had a game, a Windows only game even. Id have to fix it up everytime an update came out. But with a VM, theoretically, I would not have to, and spend my time and resources on improving the game instead of fixing it.
I know that most companies think "Well, its a new OS, not alot of users, they can wait...weeks, months, years.''
But that's money. Maybe not ''alot'', but revenue is revenue. And if I don't have to work to get back my consumers, that's a mayor win.
Is there anything really ''bad'' with VM's? Or Java, specifically? Because I'm pretty much sold on it already.
Is there a viable argument againts it? Cause I just see all this good and awesome potential(and proven, to me) benefits of it.
[quote name='alnite' timestamp='1332611288' post='4924934']
Regarding Flash vs Java, that's no brainer. Flash dominates Web more than Java (you are talking about Applet here?). I'm not sure for what reason, but I don't think it's because Java faster than Flash (or vice versa), but just a matter of preference. I know a couple of Flash developers, and they both also happen to be artists. I think Flash developer tools are more friendlier to artists, who just happen to dominate Flash animations and games industry?
Well, I'm just talking about Java as a game platform. Applets seem like a part of it as RuneScape(I think) and Spiral Knights can run from an Applet, but with Spiral Knights I can put the game on my desktop. And Wakfu is client/desktop app. Reading about Java Web Start it seems to be what I was talking about earlier about deploying the JRE with the game.
[/quote]
If you are comparing Java to Flash then you should be comparing Java Applets to Flash, Flash is very rarely used for downloadable games and in this market the installbase of the browser plugin is everything.
If you are looking at downloadable games you should compare Java to C++, C#, Python, etc and in this area Java is pretty solid from a end users point of view and yes, using a managed language that runs in a VM can be a good idea in general. That is why Microsoft is pushing C# and .Net so heavily, (With Win8 also running on ARM any game or application built using a native compiler for x86 will simply not run at all on the ARM version of Win8, .Net and Java applications won't have any problems (unless they rely on native modules but porting a few modules that are shared by hundreds of apps is far easier than porting hundreds of apps), There are also security advantages of using managed languages.
As far as Java goes however there are a few problems:
1) Trigonometry is slow on x86/x64 (This is caused by the language itself, it places accuracy guarantees on these operations that the x86 architecture cannot meet outside of a fairly narrow range, this cannot be solved without either the x86 breaking backwards compatibility or Java tossing its cross platform consistency out the window) (It isn't that hard to work around it though, but if you are writing Java games it helps alot to be aware of the problem)
2) the JIT compiler doesn't kick in immediatly, the first few iterations of any piece of code is interpreted with a profiler attached and thus slow. (Not necessarily a big deal as things get awfully fast once the JIT compiler has done its job but for games it can be a problem).
3) The garbage collector and lack of low level memory management makes it difficult to write well performing games. The gc issues can be solved by holding onto your references while you're in performance critical parts of the code and forcing the gc to run when you're not, the lack of low level memory managament however is harder to solve and does make it quite difficult to write cache friendly code (With the fairly large caches on modern PC CPUs this is becoming less of a problem but it can still have a big performance impact)
and finally:
C# is extremely similar to Java(or was extremely similar, these days C# has gone quite a bit further than Java and is in many ways a better language) but doesn't suffer from the first 2 problems. you can use ngen to precompile the C# code(or parts of it) during installation rather than compiling it each time it runs avoiding the warmup period and its math functions aren't as stricts as Java's (allowing for better performance on x86). (In theory JIT compilation can do better optimizations than you'd get with ngen though but in practice the difference is negligable (and with .Net you can choose wether to use ngen or the JIT compiler) and being able to avoid having your app run like crap while the JIT is doing its job is quite nice.
That said though, Java isn't a bad language and it is getting better and better, assuming you can find all the middleware you need its a perfectly viable choice.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
The voices in my head may not be real, but they have some good ideas!
Nobody bothers with Java becase:
- It's not portable unless you stick to absolute basics (OpenGL 1 or software rendering, basic .wav playback) It still won't run on phones or tables, so the only relevant market today isn't supported. It also won't be supported in Win8 Metro, only optionally in legacy mode.
- Sun and now Oracle officially said they don't support or care about desktop. So unless you're doing JEE server development, they don't care. Have a bug, maybe 12 year old one? They don't care. Touch? Gestures? Hah...
- It has no tool support
The last point is most important. Look at Unity and see what you get out of box. With Java, you don't even get official OpenGL support and no sound (licensing issues) beyond basic beeps.
Unity, today, is orders of magnitude more portable that Java ever was. So if that's a priority, it's a better choice. It's not great, but point-by-point it wins every time.
However, native is where it's at, at least for a few years, until tablet and phone UIs homogenize and standards emerge.
- It's not portable unless you stick to absolute basics (OpenGL 1 or software rendering, basic .wav playback) It still won't run on phones or tables, so the only relevant market today isn't supported. It also won't be supported in Win8 Metro, only optionally in legacy mode.
- Sun and now Oracle officially said they don't support or care about desktop. So unless you're doing JEE server development, they don't care. Have a bug, maybe 12 year old one? They don't care. Touch? Gestures? Hah...
- It has no tool support
The last point is most important. Look at Unity and see what you get out of box. With Java, you don't even get official OpenGL support and no sound (licensing issues) beyond basic beeps.
Unity, today, is orders of magnitude more portable that Java ever was. So if that's a priority, it's a better choice. It's not great, but point-by-point it wins every time.
However, native is where it's at, at least for a few years, until tablet and phone UIs homogenize and standards emerge.
Nobody bothers with Java becase:
- It's not portable unless you stick to absolute basics (OpenGL 1 or software rendering, basic .wav playback) It still won't run on phones or tables, so the only relevant market today isn't supported. It also won't be supported in Win8 Metro, only optionally in legacy mode.
- Sun and now Oracle officially said they don't support or care about desktop. So unless you're doing JEE server development, they don't care. Have a bug, maybe 12 year old one? They don't care. Touch? Gestures? Hah...
- It has no tool support
I don't want to come off as rude but your #1 reason is not right, completely --> http://docs.oracle.c...rchitecture.htm
- DirectX 9 on Windows XP and Windows Vista
- DirectX 11 on Windows 7
- OpenGL on Mac, Linux, Embedded
- Java2D when hardware acceleration is not possible
It also had a demo running on the Tablets, both Android and iPad, on the JavaOne event. Meaning, expect atleast OpenGL ES 1.0 Which I doubt, after seeing support for DX11 there...so, probably OpenGL ES 2.0, which Javascript uses and Flash, I think?
Touch was in it also. Gestures, not sure. But why wouldn't it after having touch?
And about OpenGL, ill give an example. -> Rage took 4 months to get to Mac after it was released to windows and the consoles, and its incomplete...Linux version? Erm...
Your #2, do you have a source for this? Because out of the information that I have gatherered, Java SE 7 is out, SE8 will be out around 2013 and SE9 around 2015.
All making quite the improvements on many parts of the VM, including merging ME to SE and Oracle's JVM with Sun's JVM. A few language enhancements and so on.
I don't know about ''tool support'', I thought most companies make their own? That's one of the reasons C# is popular, no?
But then again, what's the Tool Support for Flash and HTML5+Javascript? A few engines. Java does have some also.
Unity, yes it looks great. Great option. Nothing againts it.
If I am wrong, correct me. For me, this is all about learning. Thank you all for the responses!
Java performance is fine for the vast majority of applications. I think most resistance to it comes from a programmers end-of-use perspective. I dont like it as a language at all; too much pointless verbosity, too much handholding, too much paradigm-naziism. Safe code is great and all, but it feels a bit claustrofobic not to have the option to opt out of it and make a C call.
Maybe its just that the average quality of java programmers is low, since everyone having taken a college education in the past decade thinks he is a java programmer, but java GUI applications are in my mind strongly associated with butt-uglyness, sluggish response, and unhandled exceptions left right and center that crash your application.
C# is a much better implementation of the same concept, I would say.
Maybe its just that the average quality of java programmers is low, since everyone having taken a college education in the past decade thinks he is a java programmer, but java GUI applications are in my mind strongly associated with butt-uglyness, sluggish response, and unhandled exceptions left right and center that crash your application.
C# is a much better implementation of the same concept, I would say.
Basically Java has lost the web race, Flash has won
aye? Have you not been on the internet for ~3 years or so, flash is dying. Seems like every month theres another story about it being dropped eg since you mentioned MS
you obviously havent seen this story.
http://news.cnet.com/8301-30685_3-20105870-264/microsoft-joins-the-anti-flash-crowd-with-ie10/
the fastest growing OS today IOS, has never supported it etc.
back on topic, Im now an IOS developer but One of the great things with this apple PC was all my html/js/webgl game stuff (which I developed on a windows machine) it ran perfect first time, no farting around downloading this or changing that, it just worked (tm) same with linux.
This is what We fantasied about 20 years ago and its a reality.
Then again javascript sucks (even moreso than actionscript)
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement