I want to port webkit based browser to my stack. Can anyone tell about the organisation of the webkit browser engine? Currently what i know is that it has cores for rendering html & parsing javascript. I would like to know more, like how the javascript and renderer cores interact with each other?
http://www.webkit.org/ is a website for the WebKit Open Source Project
There don't seem to be official porting instructions. The next best thing is to use the simplest existing port as a reference and change things as needed. That may be WPE:
WPE is the reference WebKit port for embedded and low-consumption computer devices. It has been designed from the ground-up with performance, small footprint, accelerated content rendering, and simplicity of deployment in mind, bringing the excellence of the WebKit engine to countless platforms and target devices.
https://webkit.org/wpe/
https://trac.webkit.org/wiki/WPE
The port to the Enlightenment desktop environment may also be one of the simplest:
https://trac.webkit.org/wiki/EFLWebKit
Related
I am working on a browser-based application that is essentially a Digital Audio Workstation. I've seen one out there (at http://www.indabamusic.com), and it looks like it is a Java applet. Is a Java applet the best way to do this?
I've read that C++ is generally more widely used for audio programs, and I've looked at Wt ( http://www.webtoolkit.eu/wt/) for a web interface option but it doesn't seem to be meant for this kind of use (correct me if I'm wrong).
I have almost no experience with C++, so I might just be biased.
You either want a java applet or to do it in Flash (perhaps Flex). It is generally messy to get C++ bits deployed broadly in a browser.
I wanted to write a B/S project that client side uses ActiveX or Gecko to Communication with server via network socket. And any browser(ie/firefox/chrome/opera/safari) can use it.
If you want to support every major browser than you need to write both the ActiveX part (for IE) and the NPAPI part (for all other browsers). You can use support both technologies with one DLL though.
An easier way than implementing both yourself would be to use FireBreath, which does that for you and provides an abstraction layer over those APIs.
As you write native code with both technologies, sockets etc. can be used with both. The biggest limitations are with the UI side and permissions due to running code in a host application.
Note that XPCOM as a plugin technology is obsolete.
I just came across Google Native Client
Now, it looks really interesting that they ported Quake to run on a Browser and you can run C++ code on a browser to process things more quickly, but I am trying to understand, what is the practical usage of NaCl?
What is the vision behind this by Google? To run software as a service on their "cloud" OS..err browser?
For example: Run Photosphop CS 5 on your browser?!
Anything you can do with ActiveX, but far more secure.
Elaboration:
Google Native Client allows you to run machine code locally and natively, but sandboxed insofar as only allowing access to protected memory regions and disabling exploits in the machine code relating to processor errata (certain sequences of machine code operations which act strangely on particular processors). Additionally, certain APIs are available (such as OpenGL) and there is interprocess communication with Javascript running with the page, allowing webapps which have a fast, powerful native backend.
It would be quite difficult to use the Win32 API to generate any native windows or controls with Google Native Client, whereas it'd be probably a bit easier with ActiveX. However, ActiveX is generally used with things like "Quake Live" to provide a fast, native experience for the player, and additionally for Internet Explorer 'plug-ins' -- the Flash plug-in is ActiveX, for instance, and uses native code (i.e., the plugin is compiled to machine code).
It's hard to know what is multithreaded in a browser and what isn't. It seems while a video streams or progressively downloads, it does not affect page performance, so my guess it is.
Note I'm using Flash video, but it's really about video in general. Any other tips on what else is multithreaded (image loads?) is also helpful. I know JavaScript is not, and I thought Flash wasn't but I heard somewhere that it may be (or it could be done), but I think they were not well informed.
flash wmode parameter controls which mode should be used. transparent runs in browser's application domain, and "window" runs as a separate flash player process drawing on width height and x&y specified by browser.
It's platform and implementation specific. With flash on the MacOS 64 bit (sorry I only know my win platform) flash runs in its own process, so definitely multithreaded. Chrome also runs all plugins on a separate thread.
I've been doing a lot of work with Flex/Flash/Away3D lately, and have started looking into Unity3D and Processing, but I'm still waiting for the day (hopefully soon) when you can build Wii/PS3 like UIs that can be used from most computers. It would be amazing if I could just add simple lighting effects on panels that had 3D textures, but it seems like that's gonna be a while.
I keep hearing about flash getting openGL support, but haven't seen anything certain yet. Unity3D seems to be the best thing so far, but maybe you guys have heard some behind-the-scenes news.
What platform/language should we start learning if we want to be ready when full 3D support is released?
Well, it currently exists in WPF3D with XBAP, in IE. That's probably the best option currently on the market.
Google's O3D API is probably the most promising for the future, though, since they're pushing hard for an open in-browser 3D standard.
Java applets have had OpenGL support for decades!
WebGL by the Khronos Group, who are also responsible for the OpenGL and OpenGL ES standards, seems to be promising:
First announced at the Game Developers
Conference in March of 2009, the WebGL
working group includes many industry
leaders such as AMD, Ericsson, Google,
Mozilla, NVIDIA and Opera. The WebGL
working group is defining a JavaScript
binding to OpenGLĀ® ES 2.0 to enable
rich 3D graphics within a browser on
any platform supporting the OpenGL or
OpenGL ES graphics standards.
I've worked on a 3D Web technology for several years; see here (requires a small, safe plugin; windows only for now). The company linked above doesn't exist anymore, but I'm currently working on a new, more open version of the technology anyway (will be called 'open3dweb').
The idea of the 3D Web fascinates me, but I'm still not sure how widely used it will become. It has huge 'cool' factor, but I think we're still working out where its actually useful, and in which ways. I believe live Web browsing on a surface in a 3D world, and World Portals linking together separate 3D websites are both game changing technologies for interactive 3D, but its not yet clear how much 3D is a game changer for the Web...