Ever feel the need for speed? Real speed? If you're careful, you can get it without making a mess of things.
There's a whole world of language features that we sometimes miss out on as Rubyists, such as pattern matching, S-expressions, and external domain-specific languages. But the good news is that we can have them, too, as long as we're not afraid to steal a few things first.
by Frank Sommers and Bill Venners, May 22, 2006
This article contains the final installment of short, punchy audio recordings made at JavaOne on Friday, May 19, 2006. Each recording captures one person's notion of an idea that is important for developers to think about.
This article contains a collection of short, punchy audio recordings made at JavaOne on Thursday, May 18, 2006. Each recording captures one person's notion of an idea that is important for developers to think about.
This article contains a collection of short, punchy audio recordings made at JavaOne on Wednesday, May 17, 2006. Each recording captures one person's notion of an idea that is important for developers to think about.
Ed Burns is co-specification lead for JSR 252, JavaServer Faces 1.2, and Jan Luehe leads JSR 245, Java Server Pages 2.1. Artima interviewed the two spec leads on April 14, 2006, and then in a subsequent email exchange, about new JSF and JSP features included in Java EE 5. Burns and Luehe discuss the JSP and JSF common expression language, AJAX, and the role annotations play in dependency injection.
This article contains a collection of short, punchy audio recordings made at JavaOne on Tuesday, May 16, 2006. Each recording captures one person's notion of an idea that is important for developers to think about.
Broadly speaking, there are two ways to create a DSL. One is to invent a syntax from scratch, and build an interpreter or compiler. The other is to tailor an existing general-purpose language by adding or changing methods, operators, and default actions. This article explores using the latter method to build a DSL on top of Ruby.
This article is about two time-tested ideas that rightly refuse to die. The first one is time sharing. The second one is about a way to manage complexity: Because some problems require inherently complex solutions, often the best approach is to move that complexity to areas of a system where complexity can be managed best. Grid computing ties these ideas together, and provides a practical way to solve one inherently complex problem: Managing desktop computers.
Clustering emerged in recent years as the most important system architecture supporting highly available and scalable systems. This article, part of Artima's ongoing Innovative Architectures series, describes how Jini technology lays the foundation for dynamic clustering, while also reducing ongoing cluster maintenance and system administration.
A belated welcome to Ruby Code & Style
Bjarne offers a sneak peek at the next version of standard C++ ("C++0x") which should be complete by 2009.
Contract Programming is something that�s been around for a long time but is getting far more air play, and rigorous examination, in recent times. Despite general agreement regarding the attraction of software contracts to programmers (and users!), there remains equivocation on what to do when contracts are broken. This is Part One of a series that takes a slightly philosophical look at this important issue, considers the tradeoffs between information and safety in reacting to contract violations, looks at practical measures for shutting errant processes, and introduces a new technique for the implementation of unrecoverable exceptions in C++.
Ubiquitous high-bandwidth networking pushes computing increasingly away from the data center and into the network's edges. Branch office computing traditionally relied on client-server technologies with centrally located databases containing all system knowledge. The first in an occasional Leading Edge Java series on innovative architectures, this article describes a distributed system design developed by Rubean, A.G., that extends J2EE with Jini technology to help manage banking devices in a cost-effective decentralized manner.
by Alexander Libman with Vladimir Gilbourd, November 25, 2005
This article investigates and compares different design patterns of high performance TCP-based servers. In addition to existing approaches, it proposes a scalable single-codebase, multi-platform solution (with code examples) and describes its fine-tuning on different platforms. It also compares performance of Java, C# and C++ implementations of proposed and existing solutions.