Real-World Software Development: A Project-Driven Guide to Fundamentals in Java

Raoul-Gabriel Urma, Richard Warburton

買這商品的人也買了...

商品描述

From the Preface

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'll be helped through an integrated, project-driven approach to learning. You’ll learn the core topics 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.

A Developer-Oriented Approach

This book also gives you the opportunity to learn in a developer-oriented way. It contains plenty of code samples and whenever we introduce a topic we always provide concrete code examples.

We cover all the SOLID principles throughout various chapters. These are a set of principles designed to help make software easier to maintain.

  • Single Responsibility Principle (SRP), discussed in Chapter 2
  • Open/Closed Principle (OCP), discussed in Chapter 3
  • Liskov Substitution Principle (LSP), discussed in Chapter 4
  • Interface Segregation Principle (ISP), discussed in Chapter 5
  • Dependency Inversion Principle (DIP), discussed in Chapter 7

You get all the code for the projects within the book, so if you want to follow along you can even step through the book code in an Integrated Development Environment (IDE) or run the programs in order to try them out.

Another common bugbear when it comes to technical books is that they are often written in a formal, lecturing style. That’s not how normal people speak to each other! In this book you’ll get a conversational style that helps to engage you in the content rather than being patronizing.


Who Should Read This Book?

We’re confident that developers from a wide variety of backgrounds will find things that are useful and interesting in this book. Having said that, there are some people who will get the maximum value out of this book.

Junior software developers, often just out of university or a couple of years into their programming career, are who we think of as the core audience for this book.

You’ll learn about fundamental topics that we expect to be of relevance throughout your software development career. You don’t need to have a university degree by any means, but you do need to know the basics of programming in order to make the best use of this book. We won’t explain what an if statement or a loop is, for example.

You don’t need to know much about object-oriented or functional programming in order to get started. In Chapter 2, we make no assumptions beyond that you know what a class is and can use collections with generics. We take it right from the basics.

software development, programming, code, coding, Java, O'Reilly

Another group who will find this book of particular interest is developers learning Java while coming from another programming language, such as C#, C++, or Python. This book helps you quickly get up to speed with the language constructs and also the principles, practices, and idioms that are important to write good Java code.

If you’re a more experienced Java developer, you may want to skip Chapter 2 in order to avoid repeating basic material that you already know, but Chapter 3 onward will be full of concepts and approaches that will be of benefit to many developers.

We’ve found that learning can be one of the most fun parts of software development and hope that you’ll find that as well when reading this book. We hope you have fun on this journey.

商品描述(中文翻譯)

從前言開始

掌握軟體開發涉及學習一系列不同的概念。如果你是一位初級軟體開發人員,甚至是有經驗的開發人員,這可能會讓你感到難以逾越的障礙。你應該花時間學習面向物件的世界中已確立的主題,例如SOLID原則、設計模式或測試驅動開發嗎?你應該嘗試一些越來越受歡迎的事物,例如函數式編程嗎?

即使你已經選擇了一些主題來學習,要確定它們如何相互關聯通常也很困難。你應該在項目中應用函數式編程思想的路線是什麼時候?你應該何時擔心測試?你如何知道何時引入或完善這些技術?你需要閱讀一本關於這些主題的書,然後再閱讀一系列博客文章或視頻來解釋如何將這些東西結合在一起嗎?你該從哪裡開始?別擔心,這本書將幫助你。

本書將通過一種整合的、以項目為導向的學習方法來幫助你。你將學習成為一名高效的開發人員所需的核心主題。不僅如此,我們還展示了這些主題如何組合成更大的項目。

每一章都圍繞著一個軟體項目進行結構化。在一章的結尾,如果你一直跟著做,你應該能夠完成該項目的編寫。

這些項目從簡單的命令行批處理程序開始,但隨著複雜度的增加,逐漸發展成完整的應用程序。

以開發人員為導向的方法

本書還提供了以開發人員為導向的學習方式的機會。它包含大量的代碼示例,每當我們介紹一個主題時,我們總是提供具體的代碼示例。

我們在各個章節中涵蓋了所有的SOLID原則。這些原則是設計來幫助使軟體更易於維護的一套原則。


  • 單一職責原則(SRP),在第2章中討論

  • 開放封閉原則(OCP),在第3章中討論

  • 里氏替換原則(LSP),在第4章中討論

  • 介面隔離原則(ISP),在第5章中討論

  • 依賴反轉原則(DIP),在第7章中討論

你可以在本書中獲得所有項目的代碼,所以如果你想跟著做,你甚至可以在集成開發環境(IDE)中逐步查看本書的代碼,或者運行這些程序以嘗試它們。

當談到技術書籍時,另一個常見的問題是它們通常以正式的、講授的風格寫成。這不是人們之間的正常交流方式!在這本書中,你將獲得一種對話式風格,有助於讓你參與其中,而不是傲慢對待。



誰應該閱讀這本書?

我們相信來自各種背景的開發人員都會在這本書中找到有用和有趣的內容。儘管如此,有些人將從這本書中獲得最大的價值。

初級軟體開發人員,通常剛從大學畢業或從事編程工作幾年,是我們認為這本書的核心讀者群體。

你將學習到我們認為在整個軟體開發職業生涯中都具有相關性的基本主題。你不需要擁有大學學位,但你需要了解編程的基礎知識,以便更好地利用這本書。例如,我們不會解釋if語句或循環是什麼。

你不需要對面向物件或函數式編程有太多了解才能開始。在第2章中,我們不做任何假設,只要求你知道什麼是類,並且可以使用泛型集合。我們從基礎知識開始。

作者簡介

Dr. Raoul-Gabriel Urma is the CEO and founder of Cambridge Spark, a leader in transformational data science and AI training, career development, and progression. He is author of several programming books, including the best seller Modern Java in Action (Manning). Raoul-Gabriel holds a PhD in Computer Science from Cambridge University as well as an MEng in Computer Science from Imperial College London and graduated with first-class honors, having won several prizes for technical innovation. His research interests lie in the area of programming languages, compilers, source code analysis, machine learning, and education. He was nominated an Oracle Java Champion in 2017. He is also an experienced international speaker, having delivered talks covering Java, Python, Artificial Intelligence, and Business. Raoul has advised and worked for several organizations on large-scale software engineering projects including at Google, Oracle, eBay, and Goldman Sachs.

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.

作者簡介(中文翻譯)

Dr. Raoul-Gabriel Urma是Cambridge Spark的首席執行官和創始人,該公司是數據科學和人工智能培訓、職業發展和晉升的領先者。他是幾本程式設計書籍的作者,包括暢銷書《現代Java實戰》(Manning)。Raoul-Gabriel擁有劍橋大學的計算機科學博士學位,以及倫敦帝國學院的計算機科學碩士學位,並以一等榮譽畢業,並獲得了多個技術創新獎項。他的研究興趣包括編程語言、編譯器、源代碼分析、機器學習和教育。他於2017年被提名為Oracle Java Champion。他還是一位經驗豐富的國際演講者,曾就Java、Python、人工智能和商業等主題發表演講。Raoul曾為Google、Oracle、eBay和高盛等多個組織在大型軟件工程項目上提供諮詢和工作。

Richard Warburton是一位實證技術專家和解決深度技術問題的人。最近,他在高性能計算的數據分析方面進行了工作,並為O'Reilly撰寫了《Java 8 Lambdas》。他是倫敦Java社區的領導者,並組織了Java 8中Lambdas和日期時間的採用JSR計劃。Richard經常在各種會議上演講,並曾在JavaOne、DevoxxUK、Geecon、Jfokus和JAX London等場合發表演講。他在華威大學獲得了計算機科學博士學位,他的研究重點是編譯器理論。