At this writing, multicore processors are just now becoming inexpensive enough for midrange desktop systems. Not coincidentally, many development teams are noticing more and more threading-related bug reports in their projects. In a recent post on the NetBeans developer site, one of the core maintainers observed that a single class had been patched over 14 times to fix threading-related problems. Dion Almaer, former editor of TheServerSide, recently blogged (after a painful debugging session that ultimately revealed a threading bug) that most Java programs are so rife with concurrency bugs that they work only “by accident”. Indeed, developing, testing and debugging multithreaded programs can be extremely difficult because concurrency bugs do not manifest themselves predictably. And when they do surface, it is often at the worst possible time—in production, under heavy load.
One of the challenges of developing concurrent programs in Java is the mismatch between the concurrency features offered by the platform and how developers need to think about concurrency in their programs. The language provides low-level mechanisms such as synchronization and condition waits, but these mechanisms must be used consistently to implement application-level protocols or policies. Without such policies, it is all too easy to create programs that compile and appear to work but are nevertheless broken. Many otherwise excellent books on concurrency fall short of their goal by focusing excessively on low-level mechanisms and APIs rather than design-level policies and patterns.
Java 5.0 is a huge step forward for the development of concurrent applications in Java, providing new higher-level components and additional low-level mechanisms that make it easier for novices and experts alike to build concurrent applications. The authors are the primary members of the JCP Expert Group that created these facilities; in addition to describing their behavior and features, we present the underlying design patterns and anticipated usage scenarios that motivated their inclusion in the platform libraries. Our goal is to give readers a set of design rules and mental models that make it easier—and more fun—to build correct, performant concurrent classes and applications in Java.
We hope you enjoy Java Concurrency in Practice.
Eric M. Burke - Brian M. Coyner - Java Extreme Programming Cookbook
Extreme Programming does not mean programming naked while rollerblading down the side of the Grand Canyon. It does mean a new approach to software development that is both radical and common-sense. Unlike many software development methodologies, XP has been accepted quickly because its core practices--particularly code sharing, test-first development, and continuous integration--resonated immediately with software developers everywhere. Instead of impressing developers with a body of theory, XP got programmers to say, "Yeah, that's how I'd like to work."Oddly enough, although most developers turn to Extreme Programming methods in order to code real, hands-on, and extensible projects quickly ("Code comes first"), most books on Extreme Programming insist on focusing on the theory and not the practice.Not the Java Extreme Programming Cookbook.Brimming with over 100 "recipes" for getting down to business and actually doing XP, the Java Extreme Programming Cookbook doesn't try to "sell" you on XP; it succinctly documents the most important features of popular open source tools for XP in Java--including Ant, Junit, HttpUnit, Cactus, Tomcat, XDoclet--and then digs right in, providing recipes for implementing the tools in real-world environments.Each recipe offers solutions that help you put an extreme programming environment together: then provides code for automating the build process and testing. Although the time saved using any one of these solutions will more than pay for the book, Java Extreme Programming Cookbook offers more than just a collection of cut-and-paste code. Each recipe also includes explanations of how and why the approach works, so you can adapt the techniques to similar situations.One of the biggest challenges facing developers today is sorting through the wide variety of tools available form various source and figuring out how to them effectively. The recipes in Java Extreme Programming Cookbook showcase how to use the most important features of these XP tools. Many of these tools are geared towards unit testing, while others are invaluable for continuous integration; with these practical examples, you'll be able to choose the most effective tools to accomplish your goals, then implement them in a cohesive development environment quickly.If you want to set up a test-driven development environment that allows you to focus on writing testable code--now--this book will prove invaluable.
Barry Burd - Java For Dummies
The top-selling beginning Java book is now fully updated for Java 7! Java is the platform-independent, object-oriented programming language used for developing web and mobile applications. The revised version offers new functionality and features that have programmers excited, and this popular guide covers them all. This book helps programmers create basic Java objects and learn when they can reuse existing code. It's just what inexperienced Java developers need to get going quickly with Java 2 Standard Edition 7.0 (J2SE 7.0) and Java Development Kit 7.0 (JDK 7). - Explores how the new version of Java offers more robust functionality and new features such as closures to keep Java competitive with more syntax-friendly languages like Python and Ruby - Covers object-oriented programming basics with Java, code reuse, the essentials of creating a Java program using the new JDK 7, creating basic Java objects, and new Eclipse features - A companion web site offers all code from the book and bonus chapters Written by a Java trainer, Java For Dummies, 5th Edition will enable even novice programmers to start creating Java applications quickly and easily.
David A Chappell - Tyler Jewell - Java Web Services
For many Java developers, web services appeared to come out of nowhere. Its advantages are clear: web services are platform-independent (like Java itself), language-agnostic (a clear advantage over Java RMI), can easily be tunneled through firewalls (an obvious benefit to anyone who has dealt with modern enterprise networks), object-oriented (we all know about that), and tends to be loosely coupled (allowing more flexible application development). But these advantages have been obscured by a cloud of hype and a proliferation of jargon that are difficult to penetrate. What are SOAP, UDDI, WSDL, and JAXM? To say nothing of JAXR, tModels, category bags, WSFL, and other friends? And assuming that you understand what they are, how do you do anything with them? Do they live up to their promises? Are they really the future of network computing, or a dead end? Java Web Services gives the experienced Java developer a way into the Web Services world. It helps you to understand what's going on, what the technologies mean and how they relate, and shows Java developers how to put them to use to solve real problems. You'll learn what's real and what isn't; what the technologies are really supposed to do, and how they do it. Java Web Services shows you how to use SOAP to perform remote method calls and message passing; how to use WSDL to describe the interface to a web service or understand the interface of someone else's service; and how to use UDDI to advertise (publish) and look up services in each local or global registry. Java Web Services also discusses security issues, interoperability issues, integration with other Java enterprise technologies like EJB; the work being done on the JAXM and JAX-RPC packages, and integration with Microsoft's .NET services. The web services picture is still taking shape; there are many platforms and APIs to consider, and many conflicting claims from different marketing groups. And although web services are inherently language-independent, the fit between the fundamental principles on which Java and web services are based means that Java will almost certainly be the predominant language for web services development. If you're a Java developer and want to climb on the web services bandwagon, or if you only want to "kick the tires" and find out what web services has to offer, you will find this book indispensable.
Partha Kuchana - Software Architecture Design Patterns in Java
Software engineering and computer science students need a resource that explains how to apply design patterns at the enterprise level, allowing them to design and implement systems of high stability and quality. Software Architecture Design Patterns in Java is a detailed explanation of how to apply design patterns and develop software architectures. It provides in-depth examples in Java, and guides students by detailing when, why, and how to use specific patterns. This textbook presents 42 design patterns, including 23 GoF patterns. Categories include: Basic, Creational, Collectional, Structural, Behavioral, and Concurrency, with multiple examples for each. The discussion of each pattern includes an example implemented in Java. The source code for all examples is found on a companion Web site. The author explains the content so that it is easy to understand, and each pattern discussion includes Practice Questions to aid instructors. The textbook concludes with a case study that pulls several patterns together to demonstrate how patterns are not applied in isolation, but collaborate within domains to solve complicated problems.
Christian Bauer - Gavin King - Java Persistence with Hibernate
Persistence-the ability of data to outlive an instance of a program-is central to modern applications. Hibernate, the most popular Java persistence tool, provides automatic and transparent object/relational mapping making it a snap to work with SQL databases in Java applications. Hibernate applications are cheaper, more portable, and more resilient to change. Because it conforms to the new EJB 3.0 and Java Persistence 1.0 standard, Hibernate allows the developer to seamlessly create efficient, scalable Java EE applications. Java Persistence with Hibernate explores Hibernate by developing an application that ties together hundreds of individual examples. You'll immediately dig into the rich programming model of Hibernate 3.2 and Java Persistence, working through queries, fetching strategies, caching, transactions, conversations, and more. You'll also appreciate the well-illustrated discussion of best practices in database design, object/relational mapping, and optimization techniques. In this revised edition of the bestselling Hibernate in Action, authors Christian Bauer and Gavin King-the founder of the Hibernate project-cover Hibernate 3.2 in detail along with the EJB 3.0 and Java Persistence standard.
Ian Lloyd - Build Your Own Website the Right Way Using HTML & CSS
With over 60,000 copies sold since its first edition, this SitePoint best-seller has just had a fresh update to include recent advances in the web industry. With the first two editions coming highly recommended by established, leading web designers and developers, the third edition with all its extra goodies will continue that trend. Also fully updated to include the latest operating systems, web browsers and providing fixes to issues that have cropped up since the last edition. Readers will learn to: Style text and control your page layout with CSS Create and Optimize graphics for the Web Add interactivity to your sites with forms Include a custom search, contact us page, and a News/Events section on your site Track visitors with Google Analytics Extend your reach and connect your site with Social Media Use HTML5&CSS3 to add some cool, polished features to your site Use diagnosis/debug tools to find any problems And lots more ...
Odili Charles Opute - Oded Nissan - ExtGWT Rich Internet Application Cookbook
What you will learn from this book - Use ExtGWT’s very rich UI widgets - Create stunning UIs with several Layouts and Templates - Visualize data with beautiful and interactive Charts as well as third party visualization kits - Build and assemble Widgets that are bound to remote data - Create a custom theme or customize an existing one - Easily apply MVP, EventBus, Code Splitting, and other GWT best practices - Add Push functionality to your web apps with Comet - Start taking advantage of HTML5 Get ready to build the next generation Gmail, Facebook, or Meebo, with HTML5 and Server Push, taking advantage of the power and versatility of Java with ExtGWT. Sencha Ext GWT takes GWT to the next level, giving you high-performance widgets, feature-rich templates and layouts, advanced charting, data loaders and stores, accessibility, and much more. ExtGWT Rich Internet Application Cookbook will teach you to quickly build stunning functionality into your own apps with ExtGWT. This is a catalog of practical solutions to get your ExtGWT web app up and running in no time, with tips for persistence and best practices. You begin by playing with panels, windows, and tabs, to learn the essentials. Next, you engage yourself with forms, buttons, toolbars and menus to build on further. Dealing with the UI and the trees will follow to help you make stunning user interfaces. Then you will be taught to work with Listview, Views, and Gridpanels, the more complex problems. The book will then deal with charts, visualization, and drag and drop to take you to the next level. Finally, you will wind up with serialization, persistence, and custom theming. Now, you are an expert!
Emma Jane Hogbin - Drupal - A User's Guide
Finally, Drupal Made Easy: A Step-By-Step Guide from Planning to Finished Site The open source content management system Drupal offers amazing flexibility, sophistication, and power. The catch? Many first-time users find it difficult to get started, and most Drupal books don’t help with the initial stages. Drupal™ User’s Guide is different: easy to use, fun to read, practical, and complete! Long-time Drupal site developer Emma Jane Hogbin guides you through every step of building sites with Drupal, from installation and site planning through launching your first site. Drawing on her experience teaching thousands of beginners, she covers both Drupal and Web design tasks, showing exactly how they fit together. Drupal™ User’s Guide shows how to use Drupal 7’s newest improvements to build more modern, manageable sites for any business or organization. Hogbin covers crucial topics other Drupal books ignore, including search engine optimization and accessibility. Walk through installing Drupal on Mac OS X and Linux Web servers Get comfortable with Drupal 7’s new administrative interface Build a basic site in minutes Create S.M.A.R.T. (Specific, Measurable, Attainable, Realistic, Timely) site goals Audit your existing content so you can make the most of it Explore, choose, and customize Drupal themes Walk through building a community site with private discussion area Build a complete business association directory site Use Web forms to capture and display any kind of content Take advantage of Drupal’s powerful Views module Choose the right Drupal and third-party modules to build virtually any site Optimize your site for Google and other search engines Use advanced techniques to improve your visitors’ experiences If you want to create great sites with Drupal–with no hassle, no confusion, and no degree in computer science–this is the book for you!
Chris Grover - Adobe Edge Animate: The Missing Manual
Jacob Nielsen - Raluca Budiu - Mobile Usability
How do we create a satisfactory user experience when limited to a small device? This new guide focuses on usability for mobile devices, primarily smartphones and touchphones, and covers such topics as developing a mobile strategy, designing for small screens, writing for mobile, usability comparisons, and looking toward the future. The book includes 228 full-color illustrations, mainly site/app screenshots with analysis of why they work or don't work for mobile users. Based on expert reviews and international studies with participants ranging from students to early technology adopters and business people using websites on a variety of mobile devices, this guide offers a complete look at the landscape for a mobile world.
Kathy Sierra - Bert Bates - Head First Java
What will you learn from this book? _Head First Java_ is a complete learning experience in Java and object-oriented programming. This book helps you learn the Java language with a unique method that goes beyond syntax and how-to manuals and halps you understand how to be a great programmer. You'll learn language fundamentals, generics, threading, networking, and distributed programming, and you'll even build a "sink the dot com" game and networked drum machine chat client along the way. What's so special about this book? We think your time is too valuable to waste struggling with new concepts. Using the latest research in cognitive science and learning theory to craft a multi-sensory learning experience, _Head First Java_ uses a visually rich format designed for the way your brain works, not a text-heavy approach that puts you to sleep.
Matthew MacDonald - HTML5: The Missing Manual
HTML5 is more than a markup language—it's a dozen independent web standards all rolled into one. Until now, all it's been missing is a manual. With this thorough, jargon-free guide, you'll learn how to build web apps that include video tools, dynamic drawings, geolocation, offline web apps, drag-and-drop, and many other features. HTML5 is the future of the Web, and with this book you'll reach it quickly. The important stuff you need to know: - Structure web pages in a new way. Learn how HTML5 helps make web design tools and search engines work smarter. - Add audio and video without plugins. Build playback pages that work in every browser. - Draw with Canvas. Create shapes, pictures, text, and animation—and make them interactive. - Go a long way with style. Use CSS3 and HTML5 to jazz up your pages and adapt them for mobile devices. - Build web apps with rich desktop features. Let users work with your app offline, and process user-selected files in the browser. - Create location-aware apps. Write geolocation applications directly in the browser.
Eric A. Meyer - Smashing CSS
Sam Ruby - Dave Thomas - David Heinemeier Hansson - Agile Web Development with Rails
Donald E. Knuth - The Art of Computer Programming - Fundamental Algorithms
The bible of programming theory and practice is being updated for the first time in more than 20 years. The book is concerned with information structures--the representation of information within a computer, the structural interrelations between data elements and how to work with them efficiently, and applications to simulation, numerical methods and software design.
William Crawford - Jonathan Kaplan - J2EE Design Patterns
Architects of buildings and architects of software have more in common than most people think. Both professions require attention to detail, and both practitioners will see their work collapse around them if they make too many mistakes. It's impossible to imagine a world in which buildings get built without blueprints, but it's still common for software applications to be designed and built without blueprints, or in this case, design patterns. A software design pattern can be identified as "a recurring solution to a recurring problem." Using design patterns for software development makes sense in the same way that architectural design patterns make sense--if it works well in one place, why not use it in another? But developers have had enough of books that simply catalog design patterns without extending into new areas, and books that are so theoretical that you can't actually do anything better after reading them than you could before you started. Crawford and Kaplan's J2EE Design Patterns approaches the subject in a unique, highly practical and pragmatic way. Rather than simply present another catalog of design patterns, the authors broaden the scope by discussing ways to choose design patterns when building an enterprise application from scratch, looking closely at the real world tradeoffs that Java developers must weigh when architecting their applications. Then they go on to show how to apply the patterns when writing realworld software. They also extend design patterns into areas not covered in other books, presenting original patterns for data modeling, transaction / process modeling, and interoperability. J2EE Design Patterns offers extensive coverage of the five problem areas enterprise developers face: Maintenance (Extensibility) Performance (System Scalability) Data Modeling (Business Object Modeling) Transactions (process Modeling) Messaging (Interoperability) And with its careful balance between theory and practice, J2EE Design Patterns will give developers new to the Java enterprise development arena a solid understanding of how to approach a wide variety of architectural and procedural problems, and will give experienced J2EE pros an opportunity to extend and improve on their existing experience.
Eric Freeman - Elisabeth Freeman - Bert Bates - Kathy Sierra - Head First Design Patterns
You're not alone. At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on...something else. Something more challenging. Something more complex. Something more fun. You want to learn about the patterns that matter--why to use them, when to use them, how to use them (and when NOT to use them). But you don't just want to see how patterns look in a book, you want to know how they look "in the wild". In their native environment. In other words, in real world applications. You also want to learn how patterns are used in the Java API, and how to exploit Java's built-in pattern support in your own code. You want to learn the real OO design principles and why everything your boss told you about inheritance might be wrong (and what to do instead). You want to learn how those principles will help the next time you're up a creek without a design pattern. Most importantly, you want to learn the "secret language" of Design Patterns so that you can hold your own with your co-worker (and impress cocktail party guests) when he casually mentions his stunningly clever use of Command, Facade, Proxy, and Factory in between sips of a martini. You'll easily counter with your deep understanding of why Singleton isn't as simple as it sounds, how the Factory is so often misunderstood, or on the real relationship between Decorator, Facade and Adapter. With Head First Design Patterns, you'll avoid the embarrassment of thinking Decorator is something from the "Trading Spaces" show. Best of all, in a way that won't put you to sleep! We think your time is too important (and too short) to spend it struggling with academic texts. If you've read a Head First book, you know what to expect--a visually rich format designed for the way your brain works. Using the latest research in neurobiology, cognitive science, and learning theory, Head First Design Patterns will load patterns into your brain in a way that sticks. In a way that lets you put them to work immediately. In a way that makes you better at solving software design problems, and better at speaking the language of patterns with others on your team.