9.3. The Next Big Thing Of course, the whole premise of this book is arrogant beyond belief. I'm making an incredible number of assumptions and drawing some aggressive conclusions based on little more than a couple of dozen interviews, a keen sense of intuition, and a few massive piles of circumstantial evidence. Java may need nothing more than a little overhaul. Maybe the problem is in the massively complex libraries, and a few rewrites with some tweaks of the language would extend Java's leadership for 10 more years. Maybe the community's culture doesn't help define our libraries. The driving vendors may do an about-face and focus more on simplifying the 80% path instead of building yet another XML- obsessed framework. The JCP could suddenly start supporting the best existing frameworks based on experience instead of standardizing a good idea that was born in a committee. Maybe Dion Almaer is right, and the big companies that drive this industry are not remotely interested in moving away from Java, and we'll all be saddled with Java for the foreseeable future. Maybe Jason Hunter is right, and the next big thing won't be a programming language at all. Maybe Java's all we'll ever need, and we'll use that foundation to move up the abstraction ladder. Maybe Glenn and David are both right and there won't be one next big thing, but lots of next little things, and both metaprogramming and continuations will play a significant role. I don't know the ultimate answers, so I've leaned on my mentors and peers. The interviews in this book are the opinions of some of the people I respect the most. It's been an honor to share these few pages with them. I'm not ready to say that Java's dead, or that Ruby is next, or that continuation servers will reign supreme. I just know: I'm hurting right now, and my customers are, too. It's getting harder and harder to teach my customers to satisfy themselves with Java. Certain things, like baby-sitting a relational database with a web-based UI, should be easier in Java, after nearly 10 years of effort, but they're still cumbersome. The same people that dozed in conversations about other languages two years ago seem to be paying attention now. My "Beyond Java" talks, at Java conferences, are continually packed. As for me, my eyes are wide open. I've seen what the alternatives can do. In particular, Ruby on Rails lets me build reliable code fast, and put it in front of my customer with more confidence and frequency. I didn't actively seek an alternativeon the contrary, with four Java books out and a reputation in the Java space, I've got every reason to maintain the status quo. I did find that some of the alternatives are compelling, and make for a smooth transition. 9.3.1. A Charge to You If you're a Java developer and this message is troubling you, that's natural. You've got good reasons to feel threatened with this challenge of your world view. You may feel even more unsettled when someone challenges the foundation of your livelihood. I'd encourage you to put this book down and do some research of your own. Look around. When James Duncan Davidson did, he found a language that responded to his needs for low-level user interface development. Stuart Halloway found a language that let his start-up move at the speed of his ideas. Dave Thomas found the foundation for an increasingly important publishing series. Glenn Vanderburg found languages friendlier to his beloved metaprogramming techniques. If you decide to expand your horizons beyond Java, you may find that I'm right, and some of the alternatives I've explored here, or even some I didn't, unleash you. You'll be surfing the next wave that propels us forward. If I'm wrong, Java will still be there for you; heck, even COBOL is still there for you. But to you, it won't be the same Java. Other languages will expand your horizons to other approaches, just as a wave of Java developers will bring our unique view of the world with us. If you spend some time in Smalltalk, you'll probably use Java's reflection more, you'll look for more opportunities to invert control by simulating code blocks, and you may well tone down your use of XML. (OK, I may have pushed things too far with that one.) If you explore continuation servers, you may look for a way to simulate that programming style in Java. If you explore Rails, you'll likely learn to pay more attention to defaults and convention. Hibernate, Spring, Struts, servlets, collections, and the JDO could all use these techniques. Pick up your eyes by learning a language. Expand your mind to something a little more powerful, and a lot more dynamic. Warp your perspective to functional programming or continuations. Annoy your friends with a contrarian's view. Tell them that you don't think the world's flat. There's a whole universe out there, beyond Java. About the Author Bruce A. Tate is a kayaker, mountain biker, father, author, and Java programmer in Austin, Texas. His five books include the Jolt award-winning Better, Faster, Lighter Java (O'Reilly) and the bestselling Bitter Java (Manning). His 17 years of experience include stints at IBM, two failed startups, and his own independent consulting practice, called J2Life, LLC. Colophon Our look is the result of reader comments, our own experimentation, and feedback from distribution chan nels. Distinctive covers complement our distinctive approach to technical topics, breathing personality and life into potentially dry subjects. The animal on the cover of Beyond Java is a bassaris. The bassaris (Bassaris astuta) is a North American carnivore found in Mexico, Texas, and California. About the size of a typical domestic cat, the bassaris is closely related to the raccoon and fox. This brown- or tan-furred animal has a black-and-white-ringed tail that grows as long as the length of its body. The size of the tail provides balance for negotiating narrow ledges and limbs, and even allowsthe animal to reverse direction by performing a cartwheel. It can rotate its hind feet 180 degrees, giving it the ability to rapidly descend cliffs or trees, as well as cacti. The bassaris is a nocturnal, non-aggressive creature. It lives in caves, crevices, and hollow trees, and has been found in abandoned buildings and even attics of occupied dwellings. It has been known to visit campsites and rummage through gear, sometimes taking itemsespecially shiny ones. An agile climber, it negotiates trees and sheer rock faces with ease. Foraging mainly at night on small birds, rodents, lizards, snakes, invertebrates, and fruit, the bassaris will also regularly consume carrio n. Fruit is a main component of its diet, and this may reduce its need for water. Trapped for fur in some locations, the bassaris is also frequently tamed as a pet, especially in parts of Mexico. It is called by several different names, including the mountain cat, civit cat, and cat squirrel. The Mexican name for this creature is cacomixl. Its scientific name (bassaris) stems from the Greek word for fox, and in some Greek mythological tales, Dionysus wears a bassaris, which symbolizes new life. Beyond the C++ Standard Library: An Introduction to Boost By Björn Karlsson Publisher: Addison Wesley Professional Pub Date: August 31, 2005 ISBN: 0321133544 Pages: 432 Table of Contents | Index Introducing the Boost libraries: the next breakthrough in C++ programming Boost takes you far beyond the C++ Standard Library, making C++ programming more elegant, robust, and productive. Now, for the first time, a leading Boost expert systematically introduces the broad set of Boost libraries and teaches best practices for their use. Writing for intermediate-to-advanced C++ developers, Björn Karlsson briefly outlines all 58 Boost libraries, and then presents comprehensive coverage of 12 libraries you're likely to find especially useful. Karlsson's topics range from smart pointers and conversions to containers and data structures, explaining exactly how using each library can improve your code. He offers detailed coverage of higher- order function objects that enable you to write code that is more concise, expressive, and readable. He even takes you "behind the scenes" with Boost, revealing tools and techniques for creating your own generic libraries. Coverage includes Smart pointers that provide automatic lifetime management of objects and simplify resource sharing Consistent, best-practice solutions for performing type conversions and lexical conversions Utility classes that make programming simpler and clearer Flexible container libraries that solve common problems not covered by the C++ Standard Library Powerful support for regular expressions with Boost.Regex Function objects defined at the call site with Boost.Bind and Boost.Lambda More flexible callbacks with Boost.Function Managed signals and slots (a.k.a. the Observer pattern) with Boost.Signals The Boost libraries are proving so useful that many of them are planned for inclusion in the next version of the C++ Standard Library. Get your head start now, with Beyond the C++ Standard Library. © Copyright Pearson Education. All rights reserved. . You'll be surfing the next wave that propels us forward. If I'm wrong, Java will still be there for you; heck, even COBOL is still there for you. But to you, it won't be the same. its diet, and this may reduce its need for water. Trapped for fur in some locations, the bassaris is also frequently tamed as a pet, especially in parts of Mexico. It is called by several. and productive. Now, for the first time, a leading Boost expert systematically introduces the broad set of Boost libraries and teaches best practices for their use. Writing for intermediate-to-advanced