How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
Martin Fowler, Kent Beck
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
Kathy Sierra, Bert Bates
An interactive guide to the fundamentals of the Java programming language utilizes icons, cartoons, and numerous other visual aids to introduce the features and functions of Java and to teach the principles of designing and writing Java programs.
Robert Sedgewick, Kevin Daniel Wayne
The standard algorithm guide for working programmers -- now fully updated, broadened, and available again in a popular single-volume format • •The #1 practical resource for everyone seeking to run programs faster or solve larger problems. •Surveys today's most useful algorithms, with copious illustrations and examples. •Contains many new examples, ranging from physics, biology, and engineering to data compression and web search. •Contains real (not psuedocode) implementations, with detailed performance insights. Robert Sedgewick's Algorithm's has long been the definitive practical guide to using algorithms: the book that professionals and students in programming, science, and engineering rely on to solve real-world problems. Now, Sedgewick has thoroughly updated this classic to reflect today's latest, most powerful algorithms - and we've returned to the popular single-volume format our readers have been asking for. Sedgewick brings together an indispensable body of knowledge for improving computer performance and solving larger problems. In this edition, he adds: • •Many powerful new algorithms. •A broader perspective with more science and engineering applications. •New illustrations and examples throughout. •An attractive new two-color design, and more The algorithms Sedgewick presents are crucial in areas ranging from physics simulation to genetic sequencing, architectural modeling to aircraft simulation, database management to Internet search. He covers abstract data types, sorting algorithms, searching algorithms, graph processing, string processing, and geometric algorithms. Algorithms provides all the information readers need to confidently implement, debug, and apply each algorithm in any computational environment. For each, Sedgewick presents real implementations, as well as detailed insights into performance. All examples are written in Java, in a style that can be rapidly and easily translated to other languages.
Bryan Basham, Kathy Sierra, Bert Bates
This book gets readers up to speed on the technology necessary to write servlets and JSPs, what makes the Container tick, how to use the new JSP Expression Language (EL), how to write deployment descriptors, and even how to use some server-side design patterns.
David M. Geary, Cay S. Horstmann
The #1 guide to rapid user interface development with Java Server Faces (JSF) - now fully updated for the powerful new JSF 2.0 * *By two of the world's most respected Java experts: David Geary and Cay Horstmann. *Shows web developers how to automate low-level details, eliminate unnecessary complexity in server-side development, and write superior JSF 2.0 production code. *Systematically covers JSF 2.0's powerful Ajax support, open source innovations, and new feature set. JavaServer Faces (JSF) is the most powerful solution for rapid user interface development in Java-based server-side applications. Now, the world's bestselling guide to JSF, Core JavaServer Faces, has been thoroughly updated to reflect the powerful new JSF 2.0 release. In this new third edition, authors David Geary and Cay Horstmann delve into all facets of JSF 2.0 development, offering today's best practices for building robust applications, minimizing handcoding, and maximizing productivity. Drawing on unsurpassed insider knowledge of the Java platform, they present solutions, hints, tips, and 'how-tos' for writing superior JSF 2.0 production code, even if you're new to JSF, JavaServer Pages', or servlets. Geary and Horstmann systematically cover JSF's powerful Ajax development capabilities, the new open source innovations that make JSF 2.0 even more valuable, and all these new features: View Scope; Component Implicit EL Object; FacesContext; Attribute Map; New Event System; Resources; Resource Relocation; and Project Stage (Production, Development, UnitTest, SystemTest, Extension.) Web developers will discover how to: * *Automate low-level details and eliminate unnecessary complexity in serverside development. *Implement best practices in areas ranging from UI design and style sheets to internationalization. *More effectively leverage external services, including databases, LDAP directories, security, and Web services
Java Enterprise Edition (Java EE) continues to be one of the leading Java technologies and platforms from Oracle (previously Sun). Beginning Java EE 6 Platform with GlassFish 3, Second Edition is this first tutorial book on the final version of the Java EE 6 Platform. Step by step and easy to follow, this book describes many of the Java EE 6 specifications and reference implementations, and shows them in action using practical examples. This book uses the new version of GlassFish 3 to deploy and administer the code examples. Written by an expert member of the Java EE 6 specification request and review board in the Java Community Process (JCP), this book contains the best information possible, from an expert’s perspective on enterprise Java technologies. What you’ll learn Get started with the final version of the Java EE 6 Platform. Explore and use the EJB 3.1 and JPA 2.0 APIs from entities to session beans to message driven beans, and more. Discover web tier development APIs including JSPs, JSTL, and Expression Language, and especially the new JSF 2.0 and Facelets. Uncover the web services, RESTful services, and more available in Java EE 6. Create dynamic user interfaces for your enterprise and transactional Java applications. Who this book is for This book is for advanced Java programmers as well as Java EE 6 beginners. Architects will also find information about how to layer their Java EE applications. Table of Contents Java EE 6 at a Glance Java Persistence Object-Relational Mapping Managing Persistent Objects Callbacks and Listeners Enterprise Java Beans Session Beans and the Timer Service Callbacks and Interceptors Transactions and Security JavaServer Faces Pages and Components Processing and Navigation Sending Messages SOAP Web Services RESTful Web Services
For many users, working in the UNIX environment means using vi, a full-screen text editor available on most UNIX systems. Even those who know vi often make use of only a small number of its features.The vi Editor Pocket Reference is a companion volume to O'Reilly's updated sixth edition of Learning the vi Editor, a complete guide to text editing with vi. New topics in Learning the vi Editor include multi-screen editing and coverage of four vi clones: vim,elvis, nvi, and vile.This small book is a handy reference guide to the information in the larger volume, presenting movement and editing commands, the command-line options, and other elements of the vi editor in an easy-to-use tabular format.
AspectJ shows its real power when combined with Spring. This new edition focuses on Spring-AspectJ integration, which is a major feature of Spring 2.5. Readers will find this edition immensely helpful in answering questions like: What are the ways to leverage these technologies? What applications is AOP suitable for? What are the best practices and traps? Which kind of weaving should you use? When to use Spring AOP and AspectJ AOP? Expert author Ramnivas Laddad shows how to combine technologies such as Spring, Hibernate, Swing, and JDBC with AspectJ. The book fully covers the latest AspectJ 6 features. The applications and reusable code presented in this book show how AOP vastly simplifies enterprise development. This book is for developers who have experience in AOP and AspectJ, but also for those who are new to both.
Rod Johnson, Jürgen Höller, Alef Arendsen, Thomas Risberg, Colin Sampaleanu
The Spring Framework is a major open source application development framework that makes Java/J2EE(TM) development easier and more productive. This book shows you not only what Spring can do but why, explaining its functionality and motivation to help you use all parts of the framework to develop successful applications. You will be guided through all the Spring features and see how they form a coherent whole. In turn, this will help you understand the rationale for Spring's approach, when to use Spring, and how to follow best practices. All this is illustrated with a complete sample application. When you finish the book, you will be well equipped to use Spring effectively in everything from simple Web applications to complex enterprise applications. What you will learn from this book * The core Inversion of Control container and the concept of Dependency Injection * Spring's Aspect Oriented Programming (AOP) framework and why AOP is important in J2EE development * How to use Spring's programmatic and declarative transaction management services effectively * Ways to access data using Spring's JDBC functionality, iBATIS SQL Maps, Hibernate, and other O/R mapping frameworks * Spring services for accessing and implementing EJBs * Spring's remoting framework Who this book is for This book is for Java/J2EE architects and developers who want to gain a deeper knowledge of the Spring Framework and use it effectively. Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.
Jayme Schroeder, Brian Broyles
A Cookbook with wide range of recipes to allow you to learn game development with AndEngine quickly and efficiently. "AndEngine for Android Game Development Cookbook" is geared toward developers who are interested in working with the most up-to-date version of AndEngine, sporting the brand new GLES 2.0 branch. The book will be helpful for developers who are attempting to break into the mobile game market with plans to release fun and exciting games while eliminating a large portion of the learning curve that is otherwise inevitable when getting into AndEngine development. This book requires a working installation of eclipse and the required libraries, including AndEngine and its various extensions set up prior to working with the recipes.
What is this book about? The results of using J2EE in practice are often disappointing: applications are often slow, unduly complex, and take too long to develop. Rod Johnson believes that the problem lies not in J2EE itself, but in that it is often used badly. Many J2EE publications advocate approaches that, while fine in theory, often fail in reality, or deliver no real business value. Expert One-on-One: J2EE Design and Development aims to demystify J2EE development. Using a practical focus, it shows how to use J2EE technologies to reduce, rather than increase, complexity. Rod draws on his experience of designing successful high-volume J2EE applications and salvaging failing projects, as well as intimate knowledge of the J2EE specifications, to offer a real-world, how-to guide on how you too can make J2EE work in practice. It will help you to solve common problems with J2EE and avoid the expensive mistakes often made in J2EE projects. It will guide you through the complexity of the J2EE services and APIs to enable you to build the simplest possible solution, on time and on budget. Rod takes a practical, pragmatic approach, questioning J2EE orthodoxy where it has failed to deliver results in practice and instead suggesting effective, proven approaches. What does this book cover? In this book, you will learn When to use a distributed architecture When and how to use EJB How to develop an efficient data access strategy How to design a clean and maintainable web interface How to design J2EE applications for performance Who is this book for? This book would be of value to most enterprise developers. Although some of the discussion (for example, on performance and scalability) would be most relevant to architects and lead developers, the practical focus would make it useful to anyone with some familiarity with J2EE. Because of the complete design-deployment coverage, a less advanced developer could work through the book along with a more introductory text, and successfully build and understand the sample application. This comprehensive coverage would also be useful to developers in smaller organisations, who might be called upon to fill several normally distinct roles. What is special about this book? Wondering what differentiates this book from others like it in the market? Take a look: It does not just discuss technology, but stress its practical application. The book is driven from the need to solve common tasks, rather than by the elements of J2EE. It discuss risks in J2EE development It takes the reader through the entire design, development and build process of a non-trivial application. This wouldn't be compressed into one or two chapters, like the Java Pet Store, but would be a realistic example comparable to the complexity of applications readers would need to build. At each point in the design, alternative choices would be discussed. This would be important both where there's a real problem with the obvious alternative, and where the obvious alternatives are perhaps equally valid. It emphasizes the use of OO design and design patterns in J2EE, without becoming a theoretical book
Linda Lamb, Arnold Robbins
For many users, working in the Unix environment means using vi, a full-screen text editor available on most Unix systems. Even those who know vi often make use of only a small number of its features.Learning the vi Editor is a complete guide to text editing withvi. Topics new to the sixth edition include multiscreen editing and coverage of fourviclones: vim, elvis, nvi, and vile and their enhancements to vi, such as multi-window editing, GUI interfaces, extended regular expressions, and enhancements for programmers. A new appendix describes vi's place in the Unix and Internet cultures.Quickly learn the basics of editing, cursor movement, and global search and replacement. Then take advantage of the more subtle power of vi. Extend your editing skills by learning to use ex, a powerful line editor, from within vi. For easy reference, the sixth edition also includes a command summary at the end of each appropriate chapter.Topics covered include: Basic editing Moving around in a hurry Beyond the basics Greater power with ex Global search and replacement Customizing vi and ex Command shortcuts Introduction to the vi clones' extensions The nvi, elvis, vim, and vile editors Quick reference to vi and ex commands vi and the Internet
Erich Gamma, Kent Beck
* *Written by two worldclass programmers and software designers - Kent Beck and Eric Gamma! *Explains how to extend Eclipse for software projects and how to use Eclipse to create software tools that improve development time *Shows how to create our software productivity Tools using insightful examples
Frederic Daoud, Tim Fennell
Tired of complicated Java web frameworks that just get in your way? Stripes is a lightweight, practical framework that lets you write lean and mean code without a bunch of XML configuration files. Stripes is designed to do a lot of the common work for you, while being flexible enough to adapt to your requirements. This book will show you how to use Stripes to its full potential, so that you can easily develop professional, full-featured web applications. As a bonus, you'll also get expert advice from the creator of Stripes, Tim Fennell. As a Java developer, you want to leverage your knowledge and the wealth of Java libraries and tools. But when it comes to web development, many frameworks seem over-engineered and too complex. They have a steep learning curve, and it's just too difficult to get them to do exactly what you need because of their "closed-box" design. Stripes brings simplicity back to Java web development. You'll be up and running in minutes, and can go a long way with just a few simple concepts. You'll spend your time developing your application, not maintaining gobs of configuration. Because Stripes is very transparent, you will understand exactly what is going on from request to response. The popularity of Stripes keeps increasing because of its clean design and extensibility. With this complete tutorial and reference, you can master Stripes and take advantage of its productivity in web application development. You'll tailor the framework to your requirements, not the other way around! This book is packed with explanations and examples so that you learn practical problem-solving techniques. You'll be able to "wrap your head around the framework" and fully understand how Stripes works. When a client requests a feature, you'll answer "yes" with confidence because you're using a framework that lets you get the results that you need without getting in your way. Because of its open design, Stripes lets you easily integrate your favorite tools: tag libraries, AJAX frameworks, ORM solutions, dependency injectors, and more.
James Keogh, Ken Davidson
Whether you are an entry-level or seasoned designer or programmer, learn all about data structures in this easy-to-understand, self-teaching guide that can be directly applied to any programming language. From memory and addresses to hashtables, authors Keogh and Davidson, provide clear explanations that demystify this “algebra of programming.”