|
|
||
Bruce Tate's BlogJuly 2004 ArchivesSpring and the English ArcherPosted by batate on July 30, 2004 at 02:55 AM | Permalink | Comments (8)2004 is a year of revelation for me. Better, Faster, Lighter Java was a fun book to write, and I learned tremendously in writing it. A closer involvement in the Spring project, and in the Java persistence community, also led to similar discoveries for me. Its humbling to evolve my thought process in this very public forum, and thanks for sharing the ride. In this blog, Im going to ramble a little bit. Id like to draw some analogies to what I think is going on right now in the Java community. In recent days, I've been reading Bernard Cornwell's Archer series. It's a book on historical fiction. I've read with some fascination the impact of the English archer on the battlefields in the 100 years wars. The bows were 6 feet long, and they took 100 pounds of pressure to draw. To wield such an incredible weapon, archers trained from childhood. The arrows were three feet long, and exerted enough force to pierce the thickest plate armor. They had great range. While they couldnt fire as far as a crossbow, six to seven arrows could be fired for every one crossbow bolt. No one seems to know why the English were able to employ archers on the battlefield in such great numbers, while other countries were unable to leverage this weapon. We just know that it changed battlefields, and in some ways, the course of history itself. Of course, weve come to call tools like this one disruptive technologies. Throughout history, weve seen many different disruptive technologies: the printing press, cars, trains and computers. If you look at this industry, weve also seen other disruptive technologies: personal computers, the Internet, Windows and Java all changed the way that we use computers in fundamental ways. On a smaller scale, some programming paradigms are also disruptive. I believe that new programming models emerge because the old ways arent powerful enough anymore. Think about a typical problem these days. Many of us try to build an application, with a user interface that can work on most of the computers in the world, and communicate with thousands of disparate computers, all in seconds. We tie these seamlessly to databases or other resource tiers, and can even do distributed transactions between them. But thats not enough. As the programming problems get more complex (and they are), we continue to need to raise the bar. I think that were going to see aspect oriented programming in the main stream. It will probably not happen as soon as some expect, and it may prompt a completely new language from an unexpected source, but when it happens, it will be pervasive. In other cases, disruptive revolution comes from what you do, rather than what you use. As an extreme sports adventurer, I can relate. When we learned to run waterfalls with more speed and at an angle, the ski jump, and later the boof move, was born. These moves let kayakers separate themselves from the vertical water of a large waterfall, and at the same time, dangerous hydraulics below such beasts. We could then run much more extreme rapids with less effort, danger and skill. As a result of these techniques and those like them, the popularity of the sport is exploding. As a weekend extremist, Ive run a waterfall that were considered unrunnable just fifteen years ago. It was the technique, more than the kayaks, that changed, but new kayaks emerged to take better advantage, much like AOP is growing and maturing without an ideal language. Dependency injection is leading to such a disruptive revolution. I think its leveling the playing field between smaller open source teams and the big J2EE vendor, such that open source projects like Spring can compete and in many ways, surpass, the software thats coming out of the big container vendors. Spring, which already lets you do declarative transactions with objects that can be deployed outside of the container, just announced support for JMS, and will follow quickly with support of JMX. Theyre integrating AspectJ. But whats amazing to me is that Spring is still very clean and modular. Dependency injection is disruptive because its simple, and it brings elegance and clarity to a design without oversimplifying an application. This weapon, though, does not need training from childhood. It requires a little restructuring of what you already know, and a whole lot of common sense. From clarity and simplicity comes better structure. From better structure comes taller towers, in the form of applications with more power and flexibility than weve been able to achieve in other ways. This much is clear to me now. I see Spring as perhaps the fundamental driver behind dependency injection (its the lightweight container with the broadest market acceptance and momentum). In an earlier blog, I also mentioned that Spring is a good way to introduce AOP into the mainstream in a safer, more limited way. Thats why youre seeing me bet more and more of my career on it. Its disruptive. It gives me more leverage and power than Ive ever had before. A strange carPosted by batate on July 14, 2004 at 10:09 PM | Permalink | Comments (1)I was shopping for another car. I pulled up in front of the greasy car lot, wanting to know why the vintage cars were so popular. When I found the place, it seemed more like a shady garage than a dealership, and the salesman certainly reinforced that image. He had the distinct smell of transmission oil in his hair, and grime under the nails of his extended hand. I took it, and told him to show me what all of the buzz was about. Sizing me up, he walked me over to a replica of the General Lee, a famous car that was the centerpiece of a 1970s sitcom called called The Dukes of Hazard. Rather than show me the styling or the interior, Jimbo reached through the window, and popped the hood open. He then showed me the engine. Ive done a little tinkering in my time, but I didnt recognize a single stock component. I pointed to a gizmo that I did not recognize, and he told me that it was an XE7 turbo, or something like that. I barely even knew what a turbo charger was, so I may have the letters wrong. Jimbo explained that the device would give me a 2% boost in performance. I was wondering why every car would not want such a thing when Jimbo explained that only cost was that he had to let the oils in the turbo heat up while the car started, and cool down when it was done. Id have to start the car 20 minutes before I started to use it, and leave it running 20 minutes after I was done. Jimbo looked at his Frankenstein creation with pride, explaining that it took a lot of love and care to keep such a beast running, but it had never let him down. I wondered who exactly was qualified to work on such a creation. He carefully explained that keeping it running was no problem. Id eventually learn my way around under the hood well enough to do my own maintenance, and in the mean time, there were six garages in Texas who could handle the key maintenance tasks. But Jimbo said that all of the enhancements made the car fast, even very fast. I couldnt bear to tell him that I really just needed something to do what 90% of the cars in America do, just get me from place to place in traffic and over roads that would never let the car approach its full potential. I asked if I could sit in it. Jimbo broke into his toothless wide grin and said sure, I could jump in... Jump in? Ahhh of course. The General Lee. The doors were welded shut. There were no movable doors. In fact, this General Lee had been built for a Gangsta Rapper, who had not taken delivery of the vehicle, so it had an upgrade: all windows were made of 3 bullet proof glass. Perfectly secure. You could open and close them through a customized remote control that would roll them down just enough for you to squeeze into the car. Ive got my share of guilty pleasures. And one of them is the Dukes of Hazard. I really wanted to like this car, so I put my reservations aside for a little while and climbed in. I asked if I could drive it. Jimbo said sure, I could put my name on the class list Class list? It took me a little while to switch gears from programmer mode, and it occurred to me that he was going to teach me how to drive this beast. And it might not be easy. In fact, Jimbo had a waiting list for his driving class. I looked at the dash board, and immediately understood. It looked like a commercial 747. Meanwhile, Jimbo was asking whats not to like. Its fast, reliable, secure There comes a time to end the madness, and I ended the madness, cutting the sales process short. I smiled, shook hands again with a grinning and greasy Jimbo, washed my hands, and then looked outside. There were hundreds of people lined up for the opportunity to buy this car. And later, I saw one of those people flying by me at 95 (in a 35 zone) in the General Lee. He met my eye, and shouted out the window, Sucker!!!! The whole experience seemed vaguely familiar. A little heresyPosted by batate on July 08, 2004 at 03:54 AM | Permalink | Comments (10)In Hackers and Painers, Paul Graham of Arc fame dishes out his share of heresy. He tackles social heresy (actively seek out heresy, schools are prisons). But it's the programming heresies that interest me most. This guy really challenges you to think. He represents Lisp as the one true language (certainly, the most powerful.) He talks about the problems with Java. He discusses a start up founded on Lisp that was much more productive than their competition, and digs a little at the Java community by saying that he wasn't worried if his competitors were putting up job postings for Java guys. The book certainly made me think. We're in the age of heresy. You can say things today that you couldn't say five years ago. Here are a few of my favorites:
And a little heresy is good for Java. Thank you, Paul. Good middlewarePosted by batate on July 07, 2004 at 07:51 AM | Permalink | Comments (1)Today, I hopped onto my mountain bike and had a great ride. Even though it was hot, the play of the trail over the hills was beautiful to behold. It had just enough down to let me recharge my legs for the next technical climb. It had sections that stretched me technically and scared me just enough, and sections that let me turn my brain off and just cruise. I got to thinking that it was all about me. I was in a zone. But without a good trail, I couldnt have felt that rush or satisfaction. And then I started to get this great metaphor and promptly crashed. Spectacular crash; soft landing; cant complain. Back to the metaphor. A good trail sits in the background, and if its doing its job, you know its there, but will never appreciate it as much as you should. And until the last year, Id been noticing my middleware way too much lately. In a response to my first blog, I told you that Id have the most boring blog on java.net. Id have a single-minded vision of simplicity and productivity. I hope that Ive remained true to that promise. Lately, Ive been pretty vocal about EJB, lightweight containers and persistence frameworks. Theres a good reason for this. If I work hard to help establish standards that I believe make sense, it will eventually make my life easier, and my trail will fade into the background. Instead of working within the JCP, Ive been working primarily in the court of public opinion. After all, we, the Java consumers, will ultimately have the final vote. In fact, thats the reason that Justin and I wrote Better, Faster, Lighter Java. Id considered writing a book about Spring or Hibernate or even lightweight containers, but I sensed that it may be time instead to make a statement about lightweight development. Most of the people that read java.net on a daily basis already know about lightweight containers and AOP, and many like and use agile methods. But most Java developers havent got a clue about lightweight development if their vendor isnt telling them about it. Thats my intended audience. To this end, Id like to step back and talk about the principles that I believe are important for good middleware.
If you want to ramp up on the lightweight movement, you might check out my book, but if youre agreeing with everything in this blog, its probably beneath you. If you want to read authors that understand good middleware, start with Martin Fowler, Ted Neward, Stuart Halloway, and Rod Johnson. They know good middleware. If you want to see good middleware in action, start with products like Spring, Pico, Hibernate, Kodo, and Coherence. If youre looking for good architectures and services that can move you in the right direction, look into inversion of control (or dependency injection), aspect oriented programming, transparent persistence, and declarative transactions. As I picked up my bike and dusted myself off, I jumped back on the bike, and thought, Youre still a good trail. This accidents on me. WHERE'S THE CHICKEN?Posted by batate on July 05, 2004 at 04:41 AM | Permalink | Comments (0)I love San Francisco. The cable cars, the wharf, the hills, the people. And oh, yes, the food. In truth, JavaOne has never been my favorite conference. Im more of a chicken man than an elephant man, if you know what I mean. But you do have to love San Francisco and the food. So I was looking for a restaurant with Michael Loukides (who edited my book but wed never met personally), Dan Steinberg, Bert Bates and Kathy Sierra, some of the people in the publishing world that I respect the most. I was in heaven. In truth, we could have gone anywhere. Earlier in the week, a CEO who shall remain nameless called an Italian place Asian Fusion. And one night, I just went from party to party. But the different questions and different approaches to dinner time prompted this blog. So how would you expect different kinds of Java developer to approach dinner time? Process
Technology
Architecture
On a very slightly more serious note, I was wondering where to find the chicken at JavaOne. I mean, as I write this, the top 2 Java books on Amazon and book pool are Rod Johnsons book called Expertone-on-one J2EE without EJB, and my book on the lightweight movement, Better, Faster, Lighter Java. (They go very well together, by the way. My book introduces principles that sell and support the movement to those unfamiliar with it, and Rods book talks about more practical concerns.) Its amazing to me that the powers that be thought that a slightly improved programming model slapped on to the top of EJB was really all that we needed. I really dont think theyre getting the message. That's OK. I already know where to find my chicken. | ||
|
|