Java applet deprecation (NPAPI final countdown)

Dear team,

for beginning, like it is my first post, I would like to congratulate you for your very great job !

Currently, I develop an application made up of two parts : the first part is a web administration interface (with buttons, treeviews, other nice things and a JME3 Canvas) throw an applet, and the second part is an Android application used to visualize data generated using the administration interface. Everything was fine until I saw these news : http://blog.chromium.org/2013/09/saying-goodbye-to-our-old-friend-npapi.html and http://blog.chromium.org/2014/11/the-final-countdown-for-npapi.html

What do you think about this ? And what is your plan, in the future ? Does the applet generation will be removed from your IDE ?

For my project, I will keep the android application (just for interactive 3D visualization). But what about the administration interface ? If I want to keep a web-based interface, should I develop it again using Javascript and WebGL, for example ? Or should I keep my actual implementation and deploy local “desktop” applications (bad for me) ?

Advices are welcome !

Thanks
M.D.

Hello.
You could consider things like java web start or getdown.

At some point we’re planning to look into a webgl renderer for JME. But that’s not the top priority right now.

About time they deprecate it. Now we only have to get rid of games in a browser completely, what a dumb idea in the first place…

1 Like

Hi, and thank you for your responses.

@nehon : yes, I can use java web start… but, in my inital project, I wanted to integrate a 3d vizualisation applet directly inside already existing customer web-sites. So, WebGL renderer could be a great enhancement ! :wink:

@normen : are you ironic or not ? sorry, but I’m not english and I’m not able to see if it is a joke… :confused: Sure, it could be a great idea to securize and to improve web-browsers but it is a little bit drastic to remove plugin support like Java, Flash or Silverlight… but no troll, it is not the aim of this post !!!

What I don’t be able to see, it is where Google want to go : on one hand, they remove java web plugin support to create new kind of plugins based on a “special” version of C++, and on the other hand, their Android platform is based on the Java language. Great deal for me to see where I must go !!!

thanks again and long life to JME3…
bye bye
M.D.

No I am not ironic.

I wouldn’t say browser games was a bad idea… The whole new indie game movement started first with simple flash games on sites like newgrounds. Heck, even Minecraft was originally a browser game.

In any case, I have actually looked into WebGL and I don’t really see any major obstacles there - in fact, LibGDX supports it via GWT. If you would like, you could implement it for your project and then contribute it back to jME3 :wink:

2 Likes

I remember you said webgl is single threaded, and that’s the only big concern?

@Momoko_Fan : sure, I would like to contribute… but, to be honnest, not sure to be able: I come from the “classical” desktop application development (C++ and Python) and I’m a newbie in web-based application development…

What is your idea ? Is it possible to imagine a Java-server side with the JME3 core, and just a WebGL-renderer onto the client browser, using some simple communication protocols ? or it is more complicated ? Where I can start ? I’m a little bit lost with all of the web technologies.

M.D.

For sanity reasons I would not try to get BitmapText to run if it does not work out of the box.

Step 1 would probably to setup an gwt project that works. (maybee using gradle for build already? , I should be able to help there)
Step 2 get the core jme librarys to compile trough gwt to javascript
→ jme3-core
Step 3 create a renderer that uses webgl opengl api, similar to how jme3-lwjgl works for lwjgl
Step 4 get untextured simple cube to render
party :slight_smile:
Step 5 probably the assetlocator (the url one) can be reused in a gwt context to load the assets from server, (add hash based support for caching in webstorage if available?)
Step 6 try to load first model with this, and hopefully it will render fine.

Bonus look what other modules will work on that infrastructure, like jme3-effects terrain jbullet?

As far as I know webgl has similar capabilites to androids opengl api, so maybee using the android renderer is a simpler approach.

If you need any help I will try to assist :slight_smile:

You have to convert the Java code to JavaScript first, so that would be your first step.
After trying out various technologies, I think GWT from Google is probably the best thing for the job here - that’s what powers Gmail so it should be fairly robust.
Next, you will need to have jME3 running in a headless context, there’s an example here:
http://wiki.jmonkeyengine.org/doku.php/jme3:advanced:headless_server
Once this is working, all that remains is to implement the jME3 GL and GLExt interfaces via WebGL.
As an example, you can look at LibGDX:

They already support WebGL and they are also using GWT, so you can try to do things in a similar way for jME3.

ok, I see the main principle.
But if you don’t have news about me in some weeks… :wink:

I’d love to see a WebGL renderer…

I generally agree with Normen that it’s better to download and run games on the desktop, but some small games do work well in a browser and it’s good for playing games on school or library computers where you aren’t allowed to install stuff :slight_smile: I managed to escape hours of boredom in the past thanks to little flash and java games!

What interests me more though is that with a WebGL renderer, the engine is truly cross-platform. By targetting WebGL it’s usually possible to run games on platforms that aren’t yet natively supported.

It’s also a great way to let people try your game out without having to download stuff, which is particularly useful if you want to make a little tech demo or sample some assets you are offering. Imagine if all the JME contributions were in a searchable gallery with live online demos?

Another big plus is that it’s possible to target closed platforms like iOS without having to manage lots of different SDKs, install certificates, produce signed binaries, get approval from Apple - now that there’s native WebGL support in most mobile browsers it could be possible to make a single build which runs everywhere. It could even be possible to make social games that hook into Facebook and Twitter and other things on the web and make use of the javascript APIs.

As devices get faster and faster and WebGL gets more popular, I think we’ll see more and more 3d games targetting the browser. There’s already people doing advanced stuff like PBR in WebGL http://playcanv.as/p/SA7hVBLt

Hardly anyone writes business applications for the desktop any more - everything is web and cloud based because it makes it so much easier to ensure cross-platform compatibility, common UI, version control, license management etc. etc. I think it’s pretty likely a lot of big developers will start to go that way on the gaming front as well.

I spent last year trying to make nice webgl game. But I switch to JME to make nice dekstop OpenGL3+. WebGL has lot of limitation (more on windows). And you’ll rich lot of deception if you expect to be able to use jME full power with webGL.
The playcanvas team works on their engine since more than 1 year, fulltime and only target web. Like Blender4Web, turbulenz,…

1 Like

This is really cool but would be hard to do

Well, there are great webgl tech demos, from the most famous 3D engines. But you don’t really see a lot of webgl games…
IMO most of the engines that have webgl renderers did it because it’s nice to display it on the front page. And I’m ready to bet that if we implement it, it will bring a lot of buzz, but you wouldn’t see any games made with it, except the occasional attempt like “I wanted to try that, that’s fun”.

IMO AAA studios have absolutely no interest in making webgl games, they have no reason to limit themselves considering they have the marketing power to sell conventional games, and the resources to make top quality games. Webgl would be really interesting for indie devs if there was some market model like you have on mobile. (I mean something really integrated like google play or apple store).
Steam, you’re going to say. But there again, if you can get on steam, you can get on steam with a rich client game. Webgl has lot of limitations, and except for the ease of deployment it doesn’t seem to really worth the shot.

The best application for webgl is actually showcase as you said. The best example of this is sketchfab. They go pretty far, they even plan to release PBR support very soon. But here again, just model showcasing, and not a full blown game with physics, IA, post processing and all the fancy stuff we like so much.
And btw they do their own stuff, they don’t use any webgl engine.

I’d be thrilled that we had webgl support…but I doubt I would use it…

1 Like

Well…we could embed sketchfab’s models…we had it on the previous forum…but we actually don’t have that much artists around.

ok, in a “pure game” point of view, perhaps WebGL is not the most competitive rendering engine. But, to my mind, JME can be used in more generic cases, like scientific applications (it is currently what I make).
In my case, I would like to have a powerful rendering engine onto Android (with small interface): with JME I’m able to display very complex 3D interactive scenes onto my Samsung S2 or Galaxy Tab, using the Java language and without effort ! Thanks a lot !
But I also would like to have an online administration interface (client/server application with MongoDB database and RIA interface) with interactive renderer… and due to the NPAPI deprecation, today, WebGL is the most straightforward technology, isn’t it ?

Webgl in Jme would be quite usefull for Business Intelligence displays as well.

Or for a fancy website to actually download/register the client side game :stuck_out_tongue:

Yes it is indeed.
And it’s a lot less painful than all the security crap around applets…
I guess webgl is more that : 3D stuff in a web app. not really a full blown game in a browser.
I’d be glad to be proven wrong though.

Anyway, as said it’s not top priority, but it’s definitely not out of the line.

I thought we had already solved the problem of including .ttf fonts in with the games… doh<-- me

Hey guys I have enough knowledge to help out on this if ya need it… that said, I’m too busy w/ Dark Monkey, atm. I’ll give this tidbit though, just use Java to load the .ttf file into w/e OS’s JRE through… I am only repeating the quick answer that I had found … untested by me personally … I was ready to just use FontManager… but …FontManagerFactory.getInstance() is the line to follow for Java 7 so… uh… back to work for me. edit: http://opensourcejavaphp.net/java/openjdk/sun/font/FontManagerFactory.java.html

oh, and um … Pixi looks to be the closest example of the whole java->GWT->AJAX->WebGL heavy hitter on the WebGL side, I remember @atomix is currently trying to adapt Tonegod’s GUI over to it’s format:
http://www.pixijs.com/

further edit: oh, and the biggest thing that the model has going for it on WebGL is the whole streaming assets vs. a jar file that has to be d/l’d first… it is based on the web so… yeah.