New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Dionysios G. Synodinos on Feb 28, 2009
With the Web becoming the default development platform, we are witnessing major innovations in browser technology. In the spirit of time, Opera has announced plans for “the fastest JavaScript engine on the market” code named Carakan and Apple has released Safari 4 in public beta with several new features and improvements.
One of the major technical improvements of the Caracan VM over Opera’s older engine Futhark, is the fact that it doesn’t use a stack-based bytecode instruction set anymore but rather a register-based:
In the new engine, we’ve instead opted for a register-based bytecode instruction set. In a register-based machine, instead of a dynamically sized stack of values, there’s a fixed size block of them, called “registers”. Instead of only looking at the values at the top of the stack, each instruction can access any register. Since there is no need to copy values to and from the top of the stack to work on them, fewer instructions need to be executed, and less data needs to be copied.
Caracan will also support native code generation:
Although our new engine’s bytecode instruction set permits the implementation of a significantly faster bytecode execution engine, there is still significant overhead involved in executing simple ECMAScript code, such as loops performing integer arithmetics, in a bytecode interpreter. To get rid of this overhead we are implementing compilation of whole or parts of ECMAScript programs and functions into native code.
Another area of improvement is in the representation of JavaScript objects:
In the new engine, each object is assigned a class that collects various information about the object, such as its prototype and the order and names of some or all of its properties. Class assignment is naturally very dynamic, since ECMAScript is a very dynamic language, but it is organized such that objects with the same prototype and the same set of properties are assigned the same class.
This representation allows compact storage of individual objects, since most of the complicated structures representing the object’s properties are stored in the class, where they are shared with all other objects with the same class. In real-world programs with many objects of the same classes, this can save significant amounts of memory.
Opera claims that with these enhancements Caracan is currently 2.5 times faster than the engine which is featured in Opera 10 Alpha. With no release date yet, it will be interesting to see if these improvements will boost the popularity of the Opera browser, whose market share for January 2009 was 0,70% according to NetApplications.
On the other side of the river, Apple has released Safari 4 beta which also features a new JavaScript Engine named Nitro:
Using the new Nitro Engine, for example, Safari executes JavaScript up to 30 times faster than Internet Explorer 7 and more than 3 times faster than Firefox 3 based on performance in leading industry benchmark tests: iBench and SunSpider.
This new version of Safari supports several advanced and new technologies like:
Safari also comes with several new features and UI improvements like:
For more information on how to leverage these new features in the development of applications both for the desktop and the mobile version of Safari, you can visit Apple’s Safari Dev Center.
Paul Stamatiou has been spending some quality time with the new beta and is sharing his thoughts:
If this were a real review and I were to bestow Safari 4 beta with a Stammy rating, it would come in at around 6.5-7 out of 10 with emphasis on its stability and speed. So what’s Safari 4 good for? Browsing the web, not tweaking it. Let’s not forget that Safari is the king of private browsing mode *wink wink*… well not for long, Firefox 3.1 gets native support for that too.
If you’re using Safari 4 Beta take a look at some of the hidden preferences (OS X only), such as putting the tab bar back where it belongs.
With all major browser vendors doing separate work to improve their engines, Dion Almaer wonders if it would be better for them to collaborate:
Nice to see, and interesting that the browsers aren’t (or aren’t able too?) share their VM work. Each browser has a new VM implementation going. Wouldn’t it be nice if they could share effort?
Iliad replied to Dion question:
If they share the VM engines, there’s no competition, and less incentive to push for better and faster implementations. This way they keep trying to outdo each other - and that’s good.
You can find more information about Browsers, JavaScript and Rich Internet Applications right here on InfoQ.
Dionysios G. Synodinos is a Web Engineer and a freelance consultant, focusing on Web technologies
18 agile and lean practices for effective software development governance
Mobile and the New Two-Tiered Web Architecture
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
Using Drools? See what you're missing! Get the Power of Drools with the Assurance of Red Hat
...but really, from a developper point of view, the least common denominator is still Internet Explorer, and it will be for a long time. Where is the good in supporting HTML 5 features, like canvas, when we know that even IE 8 won't know them ?
IE is really stopping the evolution of the web, for the best profit of Flash (silverligth and JavaFX are too confidential for now). That's a pity to know that real time movement tracker dine in JS in an embedded video or extensible web-based IDE won't be a broad-reality due to it. And I don't even speak of perfomant JS support, nor an almost correct understanding of MIME types...
It's so irritating to see that such a good platform (the browser) can't be use to its full power because of one once monopole...
It's not really the fault of the monopoly, but more of the reluctance of IT departments to introduce competing browsers into the enterprise and computer suppliers not providing more options in their OEM installs. They are forcing the lowest common denominator.
The list of Carakan improvements is an exact blow-by-blow of the features of the V8 engine. Cool, but it's not really fair to call it innovating anymore. =]
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
3 comments
Watch Thread Reply