Hello everyone, we are 3 guys who are developing a Java browser for Java applications. What we are trying to build is a browser that can load Java applications natively (i.e. with no plugins) instead of HTML+JavaScript. We’ve also set up a website html.jawbrowser.com so that people can download and start playing with it. The browser uses JavaFX 2 and you’ll find some toy apps once you open it. We really hope to find more people who want to contribute to this project, with the browser itself or sharing some program. We’re not game developers, but we hope some of you will join us and maybe share some games
Please feel free to ask questions or contact us directly, thanks a lot guys!
Hey this is cool! I downloaded it and got this:
Exception in thread "main" java.lang.RuntimeException: Application launch error
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:122)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.win.WinApplication._
invokeLater(Ljava/lang/Runnable;)V
at com.sun.glass.ui.win.WinApplication._invokeLater(Native Method)
at com.sun.glass.ui.Application.invokeLater(Application.java:338)
at com.sun.javafx.tk.quantum.QuantumToolkit.defer(QuantumToolkit.java:62
0)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:17
3)
at com.sun.javafx.application.PlatformImpl.runAndWait(PlatformImpl.java:
212)
at com.sun.javafx.application.PlatformImpl.tkExit(PlatformImpl.java:320)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherIm
pl.java:421)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:
47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
... 1 more
Also, you guys planning to move to Nashorn when it releases with Java8? I’m quite concerned with the speed of this right now.
Cool indeed! It worked for me, I like the clean interface look. I’m not familiar with programming anything web related so I’ll ask the dumb question: is this going to become a browser such as Chrome, IE, Firefox, etc, or is it fitting a more specific niche?
Can have thumbnail before I download it?
I got an error too.
localhost:Downloads sriharshachilakapati$ java -jar jaw.jar
Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodError: getScaleFactor
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:281)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:124)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:163)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.NoSuchMethodError: getScaleFactor
at com.sun.glass.ui.mac.MacApplication._initIDs(Native Method)
at com.sun.glass.ui.mac.MacApplication.<clinit>(MacApplication.java:34)
at com.sun.glass.ui.mac.MacPlatformFactory.createApplication(MacPlatformFactory.java:33)
at com.sun.glass.ui.Application.Run(Application.java:103)
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:271)
... 5 more
I’m on mac os x mountain lion 10.8.5 with java 7 update 40
Thank you guys for the comments!
“You guys planning to move to Nashorn when it releases with Java8?”
We don’t have a position on Nashorn yet, though we’ll definitely make tests with it at some time. Currently we are only 3 people working on JAW, and since it’s not a for-profit endeavor we cannot afford to work on it full time. For this reason we have to make choices about what to focus on and what to leave out. We’ve chosen to stick with JavaFX 2 but no doubt we’ll look more into Nashorn, hopefully with the help of other developers.
We very much love this project because we believe there are huge opportunities by further separating client (within the browser) and server. Probably the single best advange is that all representation and formatting is done on the client - which also has a broad range of Java libraries at its disposal - whereas the server can stop worring about that and focus instead on handling data and serving data.
Nashorn “want to use scripting because of its dynamic style” and “The main advantage of having JavaScript running on the JVM is that it gives access to the vast array of pre-written Java libraries”. We think this is indeed in line with what we are doing, so we’ll definitely look for a deeper integration with Nashorn.
“I’m quite concerned with the speed of this right now.”
When you load an app it runs like a “normal” standalone program. JAW is not an extra layer on top of which the app runs. The difference is that an app jar is loaded dynamically and instead of writing your own stage (as in JavaFX parlance) you’re given a Pane from the browser where you can add your components. Possibly the only overhead is the SecurityManager which is used to sandbox the app. This means that you are not allowed to execute risky actions like read/write to a file or open an HTTP request, but instead you need to ask permission to the browser with calls similar to
String response = jaw.httpGet(YOUR_URL_HERE);
However, we think this little overhead is compensated by the fact that a user can safely run your app and not be frightened or bothered by some popup that basically tells him his computer is gonna explode if he accepts to run the program “unrestricted”
“Is this going to become a browser such as Chrome, IE, Firefox, etc, or is it fitting a more specific niche?”
Nice question actually, not dumb at all! At the moment it’s a niche, we programmers are that niche. We want it to growth though, because clearly everyone can benefit from a larger audience. If you mean “mainstream as Chrome/IE/Firefox”, well… we really wish that On the other hand if you mean “technically as Chrome/IE/Firefox”, then no. Differently from current browsers, we wish to have a rich client with better performance and which has access to a vast number of libraries with no need to resort to plugins or browser-specific components. We are not competing with Chrome/IE/Firefox, and despite the fact that we couldn’t actually compete with them, there really is no reason to. I’ve absolutely no idea whether the guys at Mozilla would like or even consider something like this, but if they did we would actually love to collaborate and build something cool together rather then compete. Our efforts on JAW are not aimed at building the best next web browser to overshadow Firefox or Chrome. We want instead to raise awareness around this that we consider a cool idea, and try to involve more people like us that can bring an idea to reality.
“Can have thumbnail before I download it?”
You can also watch some videos here https://www.youtube.com/channel/UC-hO5Pi2IsfSK4DOScAN1RQ
Is there somebody here who would like to give it a try and write a simple game?
Thank you ra4king and SHC for the feedback, we’ll try to solve that ASAP
Any way you can solve my error?
I’ve recompiled it and hopefully it’s gonna work now, the download link is get.jawbrowser.com.
I’ve compiled it with Java 7u40, and successfully tested on WinXP and Debian both running Java 7u40. Unfortunately I can’t test it on a Mac.
On the bright side: it should all become much easier with the release of jre8.
I don’t see what this projects tries to offer to me as a consumer. What are the benefits special features?
Thanks a lot SHC! I’ve also tested it on a Windows 8 machine and is working there as well.
“I don’t see what this projects tries to other to me as a consumer. What are the benefits special features?”
At the moment we don’t think there is an intrinsic value with the browser itself, for the same reason other browsers such as Firefox would probably be useless software if there were no websites. The value to the consumers comes indirectly from what we believe is the value for programmers. They can take advantage of a platform with a lot of libraries and better performance wrt JavaScript (for instance complex/tedious tasks like compression or encryption could possibly be performed within the browser), and they can deploy their apps without scary security popups (apps are sandboxed by default and can only ask the browser to carry on certain actions). The value you get as a consumer is a broad set of rich applications that you can browse and run without installing them or cope with plugins, and with no need to trade on security by accepting notices like this
Thanks for your question
I’m not really sure about the underlying architecture of applets and the webstart but how would this jaw browser differentiate it from those 2 ?
Wouldn’t it run into the same problems like applets did ? I mean on the exploit side of things.
The problem with Applets is that the Java sandbox is not secure. So you are conveying a false sense of security to your users. My problem with this “browser” is, that the only thing it is doing is to download apps temporarily and then displaying/running them inside your browserframe. Compared to an app-store it has no value whatsoever.
He’s not saying anything about security. Just that it removes the restrictions that browser security imposes. As for it’s actual use, as he said in the OP, you can run Java apps natively, which is not how current browsers are running them. I see it as more of a development tool for quicker testing of your apps.
Get this error when running
java -jar jaw.jar Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: com.sun.glass.ui. win.WinApplication._submitForLaterInvocation(Ljava/lang/Runnable;)V at com.sun.glass.ui.win.WinApplication._submitForLaterInvocation(Native Method) at com.sun.glass.ui.win.WinApplication.submitForLaterInvocation(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher.run(Unknown Source)
I got one of these.
C:\Users\MADS\Desktop>java -jar jaw.jar
RenderJob.run: internal exception
java.lang.UnsatisfiedLinkError: com.sun.prism.d3d.D3DContext.nSetBlendEnabled(JI
)I
at com.sun.prism.d3d.D3DContext.nSetBlendEnabled(Native Method)
at com.sun.prism.d3d.D3DContext.initState(Unknown Source)
at com.sun.prism.d3d.D3DResourceFactory.<init>(Unknown Source)
at com.sun.prism.d3d.D3DPipeline.createResourceFactory(Unknown Source)
at com.sun.prism.d3d.D3DPipeline.getD3DResourceFactory(Unknown Source)
at com.sun.prism.d3d.D3DPipeline.findDefaultResourceFactory(Unknown Sour
ce)
at com.sun.prism.d3d.D3DPipeline.getDefaultResourceFactory(Unknown Sourc
e)
at com.sun.prism.GraphicsPipeline.getDefaultResourceFactory(Unknown Sour
ce)
at com.sun.javafx.tk.quantum.QuantumRenderer$3.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at com.sun.prism.render.RenderJob.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknow
n Source)
at java.lang.Thread.run(Unknown Source)
Snap.
java -jar jaw.jar
Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: com.sun.glass.ui.win.WinApplication._submitForLaterInvocation(Ljava/lang/Runnable;)V
at com.sun.glass.ui.win.WinApplication._submitForLaterInvocation(Native Method)
at com.sun.glass.ui.win.WinApplication.submitForLaterInvocation(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher.run(Unknown Source)
Sorry but your sandbox is completely useless…
How to break out of your sandbox:
jaw.Commons.allowedThreads.add(Thread.currentThread().getId());
or call it from reflectoin