|Author(s): Raoul-Gabriel Urma, Richard Warburton.
Publisher: O’Reilly, Year: 2020
Explore the latest Java-based software development techniques and methodologies through the project-based approach in this practical guide. Unlike books that use abstract examples and lots of theory, Real-World Software Development shows you how to develop several relevant projects while learning best practices along the way.
With this engaging approach, junior developers capable of writing basic Java code will learn about state-of-the-art software development practices for building modern, robust and maintainable Java software. You’ll work with many different software development topics that are often excluded from software develop how-to references.
Featuring real-world examples, this book teaches you techniques and methodologies for functional programming, automated testing, security, architecture, and distributed systems.
Mastering software development involves learning a disparate set of concepts. If you’re starting out as a junior software developer, or even if you’re more experienced, it can seem like an insurmountable hurdle. Should you be spending time learning about established topics in the object-oriented world such as SOLID principles, design patterns, or test-driven development? Should you be trying out things that are becoming increasingly popular such as functional programming?
Even once you’ve picked some topics to learn it’s often hard to identify how they fit together. When you should go down the route of applying functional programming ideas in your project? When do you worry about testing? How do you know at what point to introduce or refine these techniques? Do you need to read a book on each of these topics and then another set of blog posts or videos to explain how to put things together? Where do you even start?
Don’t worry, this book is here to help you. You will be helped through an integrated, project-driven approach to learning. You’ll learn the core topics that you need to know in order to become a productive developer. Not only that, but we show how these things fit together into bigger projects.
Each chapter is structured around a software project. At the end of a chapter, if you’ve been following along, you should be able to write that project. The projects start off as simple command-line batch programs but grow in complexity to fully fledged applications.
You’ll benefit from a project-driven structure in a variety of ways. First, you get to see how different programming techniques work together in an integrated setting. When we look at functional programming toward the end of the book, it isn’t just abstract collection-processing operations—they’re presented in order to calculate actual results used by the project in question. This solves the problem of educational material showing good ideas or approaches, but developers often use them inappropriately or out of context.
Second, a project-driven approach helps ensure that at each stage you see realistic examples. Educational materials are often full of example classes called Foo and methods called bar. Our examples are relevant to the projects in question and show how to apply the ideas to real problems, similar to the ones that you may encounter in your career.
Finally, it’s more fun and engaging to learn this way. Each chapter is a fresh project and a fresh opportunity to learn new things. We want you to read through to the end and really enjoy turning the pages as you’re reading. The chapters start with a challenge that will be solved, walk you through the solution, and then end by evaluating what you learned and how the challenge was solved. We specifically call out the challenge at the beginning and end of every chapter to ensure that its goals are clear to you.
Supplemental material (code examples, exercises, etc.) is available for download at https://github.com/Iteratr-Learning/Real-World-Software-Development
Raoul-Gabriel Urma is a PhD student in Computer Science at the University of Cambridge. His research centers on programming languages and software engineering. He is an author of the upcoming book Java 8 in Action: Lambdas, Streams, and functional-style programming published by Manning.
Richard Warburton is an empirical technologist and solver of deep-dive technical problems. Recently he has worked on data analytics for high performance computing and authored Java 8 Lambdas for O’Reilly. He is a leader in the London Java Community and organized the Adopt-a-JSR programs for Lambdas and Date and Time in Java 8. Richard also frequently speaks at conferences, and has presented at JavaOne, DevoxxUK, Geecon, Jfokus and JAX London. He obtained a PhD in Computer Science from The University of Warwick, where his research focused on compiler theory.