Bruce Tate, Author of the Jolt Award-Winning Better, Faster
Total Page:16
File Type:pdf, Size:1020Kb
Beyond Java By Bruce A. Tate ............................................... Publisher: O'Reilly Pub Date: September 2005 ISBN: 0-596-10094-9 Pages: 200 Table of Contents | Index Bruce Tate, author of the Jolt Award-winning Better, Faster, Lighter Java has an intriguing notion about the future of Java, and it's causing some agitation among Java developers. Bruce believes Java is abandoning its base, and conditions are ripe for an alternative to emerge. In Beyond Java, Bruce chronicles the rise of the most successful language of all time, and then lays out, in painstaking detail, the compromises the founders had to make to establish success. Then, he describes the characteristics of likely successors to Java. He builds to a rapid and heady climax, presenting alternative languages and frameworks with productivity and innovation unmatched in Java. He closes with an evaluation of the most popular and important programming languages, and their future role in a world beyond Java. If you are agree with the book's premise--that Java's reign is coming to an end--then this book will help you start to build your skills accordingly. You can download some of the frameworks discussed and learn a few new languages. This book will teach you what a new language needs to succeed, so when things do change, you'll be more prepared. And even if you think Java is here to stay, you can use the best techniques from frameworks introduced in this book to improve what you're doing in Java today. Beyond Java By Bruce A. Tate ............................................... Publisher: O'Reilly Pub Date: September 2005 ISBN: 0-596-10094-9 Pages: 200 Table of Contents | Index Copyright Preface Who Should Read This Book? Conventions Using Code Examples Comments and Questions Safari® Enabled Acknowledgments Chapter 1. Owls and Ostriches Section 1.1. Ignorance as a Virtue Section 1.2. Boiling Frogs Section 1.3. New Horizons Section 1.4. The Premise Chapter 2. The Perfect Storm Section 2.1. Storm Warnings Section 2.2. The C++ Experience Section 2.3. Clouds Open Section 2.4. Fury Unleashed Section 2.5. Aftermath Section 2.6. Moving Ahead Chapter 3. Crown Jewels Section 3.1. Language and JVM Design Section 3.2. The Internet Section 3.3. Enterprise Integration Section 3.4. Community Section 3.5. Breaking the Myths Chapter 4. Glass Breaking Section 4.1. Java's New Job Description Section 4.2. Basic Java Limitations Section 4.3. Typing Section 4.4. Primitives Section 4.5. Parting Shots Section 4.6. Why Not Just Fix Java? Chapter 5. Rules of the Game Section 5.1. Java Raises the Bar Section 5.2. Enterprise Integration Section 5.3. Generating the Buzz Section 5.4. Language Features Section 5.5. A Few Potential Suitors Chapter 6. Ruby in the Rough Section 6.1. About Ruby Section 6.2. Applying Some Structure Section 6.3. Breaking It Down Chapter 7. Ruby on Rails Section 7.1. The Numbers Game Section 7.2. Rails by Example Section 7.3. Under the Hood Section 7.4. The Essence Chapter 8. Continuation Servers Section 8.1. The Problem Section 8.2. Continuations Section 8.3. Continuation Servers Section 8.4. Seaside Section 8.5. A Seaside Example Section 8.6. So What? Chapter 9. Contenders Section 9.1. The Primary Contenders Section 9.2. Minor Contenders Section 9.3. The Next Big Thing About the Author Colophon Index Beyond Java™ by Bruce A. Tate Copyright © 2005 O'Reilly Media, Inc. All rights reserved. Printed in the United States of America. Published by O'Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O'Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (safari.oreilly.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 [email protected] . Editor: Michael Loukides Production Editor: Darren Kelly Cover Designer: Ellie Volckhausen Interior Designer: David Futato Printing History: September 2005: First Edition. Nutshell Handbook, the Nutshell Handbook logo, and the O'Reilly logo are registered trademarks of O'Reilly Media, Inc. Beyond Java, the image of a bassaris, and related trade dress are trademarks of O'Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O'Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and author assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. ISBN: 0-596-10094-9 [M] Preface In March of 2005, I was shocked and honored to get the word that one of my books,Better, Faster, Lighter Java (O'Reilly), won a Jolt award for technical excellence. I talked about how Java? developers could buck standing conventions to build better applications, faster than before. That book will always have a special place in my heart. Yet, throughout the process, something was in the way, and I couldn't quite put my finger on it. Around this time, one of my customers was building an application consisting of a complex database schema with a web-based user interface. We'd been using Spring and Hibernate with Web Work, a common stack for lightweight Java development, and we'd been generally pleased. Some things bugged us, though: the amount of repetition, the proliferation of XML configuration, and the pace of our changes. On a whim, we tried Ruby on Rails, a surprisingly productive and innovative framework that's sweeping quickly through non-Java communities, and is making some noise among Java architects, too. We were shocked with our productivity, and we moved the project to the new foundation. Something clicked into place for me. For this kind of application, Java itself was in the way. Remove it from the equation, and I could reduce the amount of code by a factor of four, drive the XML down to one-tenth of what it was, and achieve stunning productivity, with good performance. Better still, the concepts in Better, Faster, Lighter Java still applied. For other projects, if I needed the community and tools that Java offered, I could use it instead. If I didn't need Java, I could take the principles in BFLJ to the extreme. A dam inside me broke, and this new book started pouring out. I had a message. Months later, I found an audience, thousands of miles and 19 hours from home. I fidgeted nervously before the Java User's Group. I'd certainly addressed larger groups, but this trip was different. In this case, the Norwegian Java User's Group had paid my travel expenses to Oslo, not to sing the praises of Spring, or Hibernate, or agile development, but to call their baby ugly. It was hard for me. After writing the bestsellers, getting the Jolt, and building a thriving consulting practice in a down economy, I wanted the Java train to roll on, unstoppable, always building on an ever-strengthening foundation. I wanted Java to send my productivity through the roof, and for the impressive community and brain power to solve all the tough problems that Java faces today, but nothing lasts forever. In the talk, I didn't pick an eventual winner. I laid out the reasons for Java's success, and then talked through its most serious problems. I showed some alternative languages and frameworks, as I saw them. Throughout the talk, I pointed out that conditions are ripe for an alternative to emerge. As I addressed the hospitable group, I answered questions and read faces. A few looked hostile, or hurt. Most others showed understanding, and a little fear. They understood my central thrust. For many of the most common problems that we solve with Java, some other frameworks in other languages can already do a better job. In some cases, the productivity discrepancy is wide enough to merit a serious look. The talk, and the questions, went on way too long, but nobody left. They were surprisingly receptive. After the presentation, we went out to see some of Oslo. One of the hostile attendees cornered me for most of the night. The hard questions just wouldn't quit coming: Why can't we improve Java to cover the shortcomings? Do the other frameworks and languages that you presented have enough commercial backing? What about distributed transactions, or web services, or XML support? How can you find programmers, or train the ones you find? These questions are real, and they show the tremendous barriers of entry against emerging languages. My questioner was a gentleman, but he could not completely hide his agitation or his deep-seated belief that the hurdles for the next successful language are incredibly high, and that we'll still be coding in Java for the foreseeable future. He could well be right. But I've come to recognize some real limitations in the Java language, and many of the frameworks that power it. For certain problems, Java just isn't productive enough for me anymore. I've experienced success with some alternatives. Though a language can last half a century to support legacy applications, I know no language can keep its leadership and its luster forever. Java's reign will end. It's not a question ofif , but when. Who Should Read This Book? When C++ faded into relative obscurity, many of my best friends got burned, badly.