11/2/2019 Best Java Games
Best Mobile Entertainment Game For Your Mobile The brilliant Diamond Rush For Java Phones. Grab the diamonds and the lam! Not an easy adventure is waiting for you, falling on top of stalactites Tibetan, stuffy Angora forests, poisonous spiders of the Bavarian castle.
As devices get smarter, games get more exciting and the picture more vivid. People who play Java games describe the scenery as jumping right out of the screen. Over the past 5 years there have been a plethora of games released, but this year has proven to be the best for vivid, action-packed, high-resolution games. Below is a list of the best Java games to hit the screen this year.
**Learn Java with this Java for Complete Beginners course on Udemy**
Bruce Lee Iron Fist
If you like action and pretending to be a Kung Fu master, then this game is sure to please. In typical Bruce Lee fashion, the bad guy’s butts are handed to them with a series of jump kicks, kick sweeps and karate chops. The object of the game is to challenge the karate champions of the underground to a dual, win and bring them to justice. To perform the fighting moves, simply use your number keypad, and press 0 to initiate the special attack when the special move bar appears at the top of the screen. If you love the sprite graphics in Street Fighter II, you’ll love the crystal clear, colorful graphics in this game. The only downside to Bruce Lee Iron Fist is that you need internet connection to play after downloading it.
Midnight Pool 3
If you ever wanted to play pool in the middle of the night, but couldn’t sneak away, this is the game for you. This is a pool game unlike any other and there is a reason that it’s taking place at midnight. Midnight Pool 3 has three playing modes: quick game, career mode, and friend mode. Quick mode is literally a quick match between you and the computer. Career mode allows you to play in a slightly more challenging scenario. In this mode, you’ll be pitted against other pool players to settle a score between you two. You’ll be periodically taken to a scene where you’re talking trash to each other (which is what makes this mode so exciting). In the friend mode, you’ll have the option of playing against friends in the same 8-ball, British 8-Ball, 9-Ball and 3-Ball setups.
Project Gotham Racing
If you love the feeling of your virtual ‘pedal to the metal’, then you’ll love the high intensity racing game Project Gotham Racing. In this visually stunning Java racing game, you won’t be bored to death with plain racing tracks and endless twists in turns. In fact, you’ll be confronted with obstacles that you have to avoid or drive through in order to up the ante a bit. This game is challenging, addictive and has a moderate learning curve, so it’s fun for people of all ages.
Learn How to Make Java Games Online
If you’re interested in learning more about Java and possibly even writing your own java games, here are some courses to get you started:
Active3 years, 9 months ago
Why aren't many commercial, 3D video games (not random open source 2D ones) written in Java? In theory, it makes a lot of sense: you get a productivity boost and a cross-platform application almost for free, among other things, such as the vast amount of Java libraries, and built-in garbage collection (although I admit I'm not sure if the latter is a good thing). So why is it rarely used? I can only think of a couple popular commercial games written for the Java platform.
Is it because of performance? If so, wouldn't most of the heavy lifting be done by the GPU anyway?
Sasha Chedygov
Sasha ChedygovSasha Chedygov
95.1k2424 gold badges9494 silver badges105105 bronze badges
closed as not constructive by KevMay 23 '12 at 9:00
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.
22 Answers
The game development world is a funny one: On one hand, they're often quick to accept new ideas, on the other hand, they're still in the stone age.
The truth is, there's rarely that much incentive in switching to .NET/Java/anything other than C/C++.
Most game companies license parts of the game engine from other companies. These parts are written in C++, and although you might have access to the source so you could port it, that takes a lot of effort (and of course, the license needs to allow it).
Also, a lot of legacy code already exists in C++. If code from previous projects can be reused (say, if you're writing a sequel), that counts even more in favor of sticking with the same language, instead of rewriting it in a new language (more so since you'll likely reintroduce a ton of bugs which you'll need to spend time ironing out.
Finally, it's rare for games to be written in 100% C++ anyway - a lot is done using scripting languages, whether they're custom or just integrating an existing languages (Lua being one of the more popular ones these days).
As far as garbage collection is concerned, that can be a bit of a problem. The problem is not so much that it exists, it's more how it works - the garbage collector MUST be non-blocking (or at least be guaranteed to only block very briefly), since it's simply unacceptable to have the game freeze for 10 seconds while it scans all the allocated memory to see what can be freed. I know Java tends to choke quite a bit in GC'ing when it's close to running out of memory (and for some games out there, it will).
You're also a bit more restricted in what you can do: you can't fully exploit the hardware due to the overhead of the runtime. Imagine Crysis being written in Java.. even if that's the only visible difference, it just wouldn't be the same (I'm also pretty sure you'd need a Core i7 to run it.).
This doesn't mean these languages don't have their place in game development - and no, I'm not just referring to tool programming. For most games, you don't need that extra bit of performance you get from C++, including 3D games, and if you're writing it all from scratch, it can make perfect sense to use something like XNA - in fact, there's a good chance it will.
As far as commercial games are concerned - does RuneScape count? That may well be the most succesful Java game out there.
Michael MadsenMichael Madsen
48.3k66 gold badges6464 silver badges7777 bronze badges
Best Java Games 2019
I think John Carmack said it best with:
The biggest problem is that Java is really slow. On a pure cpu / memory / display / communications level, most modern cell phones should be considerably better gaming platforms than a Game Boy Advanced. With Java, on most phones you are left with about the CPU power of an original 4.77 mhz IBM PC, and lousy control over everything. [..snip..] Write-once-run-anywhere. Ha. Hahahahaha. We are only testing on four platforms right now, and not a single pair has the exact same quirks. All the commercial games are tweaked and compiled individually for each (often 100+) platform. Portability is not a justification for the awful performance.
(source)
Granted, he was talking about mobile platforms, but I've found similar problems with Java as a whole coming from a C++ background.I miss being able to allocate memory on the Stack/Heap on my own terms.
Sasha Chedygov
95.1k2424 gold badges9494 silver badges105105 bronze badges
MarcMarc
2,41822 gold badges1616 silver badges2121 bronze badges
For one thing, Java's lack of operator overloading makes all of the math you have to deal with to get a working graphics pipeline very, very annoying and hard to read.
All of the matrix multiplication and affine vectors you need to deal with are a lot easier to follow if they're in well-formed mathematical expressions rather than object-oriented expressions like
That's just terrible. Math shouldn't look like that.
WelbogWelbog
51.5k88 gold badges9898 silver badges116116 bronze badges
I think .NET had (has) a lot of the same perceived issues that Java has. Microsoft has just done a better job at marketing to developers with XNA :-)
Joel MartinezJoel Martinez
33.7k2424 gold badges118118 silver badges178178 bronze badges
Minor points first:
But mainly, the issue is backwards compatibility. Games developers moved to C++ from C and to C from assembly purely because the migration route was smooth. Each interoperates closely with the previous, and all their previous code was usable in the new language, often via a single compiler. Therefore migration was as slow or as fast as you liked. For example, some of our old headers in use today still have #ifdef WATCOMC in, and I don't think anybody has used the Watcom compiler here in a decade or more. There is a massive investment in old code and each bit is only replaced as needed. That process of replacing and upgrading bits and pieces from one game to the next is nowhere near as practical if you changed to a language that doesn't natively interoperate with your existing code. Yes, C++/Java interoperability is possible, but very impractical by comparison to simply writing 'C with a bit of C++' or embedding asm blocks in C.
To properly supercede C++ as the game developers' language of choice, it must do one of two things:
Subjectively, I don't think Java meets either of those. A higher-level language might meet the 2nd, if someone is brave enough to be the pioneer. (EVE Online is probably the best example we have of Python being usable, but which uses a fork of the main Python language, many C++ components for performance, and even that is for a fairly undemanding game in modern terms.)
KylotanKylotan
16.6k66 gold badges3838 silver badges7070 bronze badges
I'm playing the Sims 3, and I did some poking around.The graphics engine is C++, while the scripting and behavior engine is C#/Mono.So while C++ is there for time critical bits, other stuff like .interaction, game logic, AI is in an object oriented managed language.
John SimonJohn Simon
35.5k1010 gold badges9292 silver badges129129 bronze badges
One of the biggest reasons Java and other Virtual Machine languages are not used for games is due to Garbage Collection. The same thing goes for .NET. Garbage collection has come a long ways and works great in most types of applications. In order to do garbage collection though, you do need to pause and interrupt the application to collect the trash. This can cause periodic lag when collection happens.
Java has the same problem for realtime applications. When tasks must run at a specific time, it is hard to have an automated task such as garbage collection respect that.
It is not that Java is slow. It is that Java is not good at handling realtime tasks.
Chris DailChris Dail
21.3k99 gold badges5858 silver badges7272 bronze badges
A large reason is that video games require direct knowledge of the hardware underneath, often times, and there really is no great implementation for many architectures. It's the knowledge of the underlying hardware architecture that allows developers to squeeze every ounce of performance out of a gaming system. Why would you take the time to port Java to a gaming platform, and then write a game on top of that port when you could just write the game?
edit: this is to say that it's more than a 'speed' or 'don't have the right libraries' issue. Those two things go hand-in-hand with this, but it's more a matter of 'how do I make a system like the cell b.e. run my java code? there aren't really any good java compilers that can manage the pipelines and vectors like i need.'
San JacintoSan Jacinto
7,43433 gold badges3434 silver badges5757 bronze badges
Performance issue is the first reason. When you see the kind of hyper optimized C++ code that are in the Quake engines ( http://www.codemaestro.com/reviews/9 ), you know they're not gonna waste their time with a virtual machine.
Sure there may be some .NET games (which ones ? I'm interested. Are there some really CPU/GPU-intensive ones ?), but I guess it's more because lot of people are experts in MS technologies and followed Microsoft when they launched their new technology.
Oh and cross-platform just isn't in the mind of video games companies. Linux is just around 1% of market, Mac OS a few % more. They definitely think it's not worth dumping Windows-only technologies and librairies such as DirectX.
KsempacKsempac
1,69722 gold badges1616 silver badges2323 bronze badges
Best Java Game Library
You can ask why web applications aren't written in C or C++, too. The power of Java lies in its network stack and object oriented design. Of course C and C++ have that, too. But on a lower abstraction. Thats nothing negative, but you don't want to reinvent the wheel every time, do you?
Java also has no direct hardware access, which means you are stuck with the API of any frameworks.
Markus LuxMarkus Lux
1,25711 gold badge99 silver badges1919 bronze badges
Misconceptions about performance and poor JVM optimizations would be my guess. I say misconceptions about performance because there are some Java ports of C++ games that perform faster than their C++ counterparts (see Jake 2). The real problem, IMHO, is that many Java programmers aren't focused so much on bleeding edge performance as they are with ease of use and understandability/maintainability of code. On the C/C++ side of things you're essentially coding in a slightly higher level assembly language and its about as close to the hardware as you can get without writing in assembly or straight machine code.
illvmillvm
List of game engines on Wikipedia lists many game engines along with the programming language that they are written in.
There are several Java game engines listed.
Clicking some of the links will lead you to examples of games and demos written in Java. Here's a couple:
For certain games and situations, Java's trade-offs might be acceptable.
JohnBJohnB
12.2k1414 gold badges7979 silver badges9797 bronze badges
.NET definitely has some of the same issues that Java has when it comes to intense 3D performance. Microsoft has also invested a lot more time and money in the development of the libraries when it comes to working with 3D heavy operations.
Typical driver shaft length. Again, as mentioned before, the key is finding the driver shaft length that best provides your unique swing and ability with the most distance, and more importantly, consistent accuracy.Once you determine the proper shaft length a quick tip would be to have a local golf store or pro shop cut your current driver shaft down to the appropriate size (a good time to to this is when you’re getting your clubs re-gripped anyway). Contrast that to the lengthy driver and you’ll soon realize why so many golfers struggle getting off the tee box. This is a log cheaper than buying a new shaft but once you make the cut, your committed, so make sure it’s the right move for you by testing out different driver lengths at the range and then see which one works best.Quick tip: Purchase golf impact tape to place on your club head to see which length provides the most consistent sweet spot contact.
(..personally, I also think they had a leg up when it comes to the magic between DirectX and .NET)
Best Java Games PhonekyJustin NiessnerJustin Niessner
216k3131 gold badges371371 silver badges504504 bronze badges
19.4k44 gold badges3535 silver badges5151 bronze badges
Actually, it is very possible for managed code to do 3d games, the problem is the back engines. With .Net, for a brief period, there was a Managed DirectX wrapper to DirectX 9 by Microsoft. This was before the abstraction that is now XNA.
Being given total access to DirectX api's, .Net games work a treat. The best example I know of is www.entombed.co.uk, which is written in VB.Net.
Unfortunately, on the Java side, it is seriously lacking - mainly for the reason that DirectX isn't available for Java, and games programmers know and understand the DirectX api - why learn yet another api when you will be returning to DirectX?
FozFoz
Game marketing is a commercial process; publishers want quantifiable low-risk returns on their investment.As a consequence, the focus is usually on technology gimmicks (with exceptions) that consumers will buy to produce reliable return - these tend to be superficial visual effects such as lens glare or higher resolution.These effects are reliable because they simply use increases in processing power - they exploit the hardware/Moore's law increases.this implies using C/C++ - java is usually too abstracted from the hardware to exploit these benefits.
Daniel CollicottDaniel Collicott
I'd guess that speed is still the issue. Cross platform is going to be an issue isn't it since you don't know what 3d card is available when you write the code? Does java have anything to support auto discovery of 3d capabilities? And I'd guess that there are tools to ease porting a game between the wii, xbox, and ps3, but expensive I'll bet.
The ps3 has java, via the blue ray support. Check the bd-j site.
lumpynoselumpynose
Even games written on the .Net platform are often highly optimized for speed like direct access to memory and bus. .Net allows to use C / C++ and mix it with higher level languages such as C#.
Game development studios often work close together with hardware vendors, which do provide access to low level interfaces of their products. This is a world, where you have to use ASM and C for device communication. A virtual environment would slow down these program parts.
Anyway, modern 3D games in fact do use higher level languages. Often, you'll find the game logic written in languages like Lua or Python. But the core (I/O, threads, task scheduling) of the typical 3D game will be written in low level languages for the next 25 years or as long devices do not allow abstraction and virtualization by themself (which will come).
cafebabecafebabe
I agree with the other posts about leveraging elements of a preexisting/licensed codebase, performance, etc.
One thing I'd like to add is it's hard to pull nasty DRM tricks through a virtual machine.
Also I think there's a hubris component where project managers think they can make stable/reliable code with C++ with all the perks like having absolute control over their tools and resources, BUT without all the negatives that complicate and bog down their competition because 'we're smarter than they are'.
JP772JP772
Runescape by Jagex is written in Java, the 'video game' tag might not specifically apply it being an on-line game, but it does have a decent following.
Mark SchultheissMark Schultheiss
25.8k88 gold badges5757 silver badges8585 bronze badges
It was talked about it a lot already, u can find even on Wiki the reasons..
And I hear more and more Java programmers that try to convince people that Java is not slow, it is not slow for drawing a widget on the screen and drawing some ASCII characters on the widget, to receive and send data through network(And it is recommended to use it in this cases(network data manipulation) instead of C/C++).. But it is damn slow when it comes to serious stuff like math calculations, memory allocation/manipulation and a lot of this good stuff.
I remember an article on MIT site where they show what C/C++ can do if u use the language and compiler features: A matrix multiplier(2 matrices), 1 implementation in Java and 1 implementation in C/C++, with C/C++ features and appropriate compiler optimisations activated, the C/C++ implementation was ~296 260 times faster than the Java implementation.
I hope you understand now why people use C/C++ instead of Java in games, imagine Crysis in Java, there would not be any computer in this world which could handle that.. + Garbage collection works ok for Widgets which just destroyed an image but it's still cached in there and needs to be cleaned but not for games, for sure, u will have even more lags on every garbage collection activation.
Edit: Because somebody asked for the article, here, I searched in the web archive to get that, I hope you are satisfied..MIT Case Study
And to add, no, Java for gaming is still an awful idea. Just a few days ago a big company that I will not name started rewriting their game client from Java to C++ because a very simple game(In terms of Graphics) was lagging and heating i7 Laptops with powerful nVidia GT 5xx and 6xx generation video cards(not only nVidia, the point here is that this powerful cards that can handle on Max settings most of the new games and can't handle this game) and the memory consumption was ~2.5 - 2.6 GB Ram. For such simple graphics it needs a beast of a machine.
ζ--
31.5k44 gold badges6666 silver badges9191 bronze badges
Java Pc Games
Lilian A. MoraruLilian A. Moraru
Not the answer you're looking for? Browse other questions tagged java or ask your own question.Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |