InfoQ Homepage Development Content on InfoQ
-
Ruby's Open Classes - Or: How Not To Patch Like A Monkey
Ruby's Open Classes are powerful - but can easily be misused. This article looks at how to minimize the risk of opening classes, alternatives, and how other languages provide similar capabilities.
-
Exploring LISP on the JVM
One of the most exciting things in the Java world right now is the work being done to get other programming languages to run on the virtual machine. There is a lot of buzz around JRuby, Groovy, Scala, and the JavaScript engine Rhino. But why stop there? If you really want to take a step outside the mainstream and dive into something completely different from Java, Lisp is a great option.
-
Introducing Multithreaded Programming to JavaScript
While increasingly more websites are fully or partially based on AJAX, it is still difficult to develop complicated AJAX applications. What is the main issue which causes this difficulty in developing AJAX applications? Is it asynchronous communication with the server, or is it GUI programming? How can a multithreading JavaScript library help to ease some of these issues?
-
Beyond SOA: A New Type of Framework for Dynamic Business Applications - Part II
In this second part of their article, the authors explore the architecture of Dynamic Business Applications and introduce the concept of a Resource Container. They demonstrate how this architecture can be layered on top of JEE and how it impacts implementation productivity.
-
Rationalizing the Presentation Tier
Thin client paradigm characterized by web applications is a kludge that needs to be repudiated. Old compromises are no longer needed and it's time to move the presentation tier to where it belongs. In this article, Ganesh Prasad and Peter Svensson explains how and why.
-
AtomServer – The Power of Publishing for Data Distribution
In this article, Bryon Jacob and Chris Berry introduce AtomServer, their implementation of a full-fledged Atom Store based on Apache Abdera. The authors spent the last year implementing an Atom Store for Homeaway, their employer, and are mnow making the Atom Store framework available as open source.
-
An Introduction to Virtualization
It is easy to think that virtualization applies only to servers. In reality the recent resurgence of the concept is being applied at a variety of levels including networking, storage, and application infrastructure. In this introduction to the topic InfoQ dives into each area describing its uses as well as benefits and disadvantages.
-
Do Java 6 threading optimizations actually work? - Part II
Features like biased locking, lock coarsening, lock elision by escape analysis and adaptive spin locking are all designed to increase concurrency by allowing more effective sharing amongst application threads. But do they actually work? In this two part article, Jeroen Borgers explores these features and attempt to answer the performance question with the aid of a single threaded benchmark.
-
Best Practices for Model-Driven Software Development
Model-driven software development no longer belongs to the fringes of the industry but is being applied in more and more software projects with great success. In this article we would like to pass on, based on the experiences we have gathered in the past few years, our contribution to its best practices.
-
Domain Specific Languages in Erlang
Erlang is well known for it's concurrency model and fairly well known for robustness. But what about other aspects? In this article, Dennis Byrne shows how to use Erlang for creating internal DSLs.
-
Do Java 6 threading optimizations actually work?
Features like biased locking, lock coarsening, lock elision by escape analysis and adaptive spin locking are all designed to increase concurrency by allowing more effective sharing amongst application threads. But do they actually work? In this two part article, Jeroen Borgers explores these features and attempt to answer the performance question with the aid of a single threaded benchmark.
-
Nate Kohari on Releasing Ninject 1.0
Ninject is touted as a lightning-fast, ultra-lightweight dependency injector for .NET applications. Helping developers split applications into a collection of loosely-coupled, highly-cohesive pieces, and then glue them back together in a flexible manner. Using Ninject to support your software's architecture, your code will become easier to write, reuse, test, and modify.