Real-World Software Development: A Project-Driven Guide to Fundamentals in Java
暫譯: 實務軟體開發:以專案為導向的 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 原則。這些原則旨在幫助使軟體更易於維護。

- 單一職責原則 (Single Responsibility Principle, SRP),在第二章中討論
- 開放/封閉原則 (Open/Closed Principle, OCP),在第三章中討論
- 里氏替換原則 (Liskov Substitution Principle, LSP),在第四章中討論
- 介面隔離原則 (Interface Segregation Principle, ISP),在第五章中討論
- 依賴反轉原則 (Dependency Inversion Principle, DIP),在第七章中討論

你可以獲得書中專案的所有程式碼,因此如果你想跟著進行,甚至可以在整合開發環境 (Integrated Development Environment, IDE) 中逐步執行書中的程式碼,或運行程式來嘗試。

另一個技術書籍常見的問題是,它們通常以正式的、講課的風格撰寫。這不是正常人之間的對話方式!在這本書中,你將獲得一種對話風格,幫助你更好地參與內容,而不是讓人感到居高臨下。

誰應該閱讀這本書?

我們相信來自各種背景的開發者都會在這本書中找到有用和有趣的內容。話雖如此,還是有一些人能從這本書中獲得最大的價值。

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

你將學習到我們期望在你的軟體開發職業生涯中具有相關性的基本主題。你不需要擁有大學學位,但你需要了解編程的基本知識,以便充分利用這本書。例如,我們不會解釋什麼是 if 語句或迴圈。

你不需要對物件導向或函數式編程有太多了解就可以開始。在第二章中,我們不會假設你知道什麼是類別,並且能夠使用帶有泛型的集合。我們將從基礎開始。

另一個對這本書特別感興趣的群體是那些從其他編程語言(如 C#、C++ 或 Python)轉向學習 Java 的開發者。這本書幫助你快速掌握語言結構以及編寫良好 Java 代碼所需的重要原則、實踐和慣用語。

如果你是一位更有經驗的 Java 開發者,你可能想跳過第二章,以避免重複你已經知道的基本內容,但從第三章開始將充滿許多對許多開發者有益的概念和方法。

我們發現學習可以是軟體開發中最有趣的部分之一,希望你在閱讀這本書時也能感受到這一點。我們希望你在這段旅程中玩得愉快。

作者簡介

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.

作者簡介(中文翻譯)

Raoul-Gabriel Urma 博士是 Cambridge Spark 的執行長及創辦人,該公司在轉型數據科學和人工智慧訓練、職業發展及進步方面處於領導地位。他是幾本程式設計書籍的作者,包括暢銷書 Modern Java in Action(Manning)。Raoul-Gabriel 擁有劍橋大學的計算機科學博士學位,以及倫敦帝國學院的計算機科學碩士學位,並以一級榮譽畢業,曾獲得多項技術創新獎項。他的研究興趣包括程式語言、編譯器、源代碼分析、機器學習和教育。他於 2017 年被提名為 Oracle Java Champion。他也是一位經驗豐富的國際演講者,曾就 Java、Python、人工智慧和商業等主題發表演講。Raoul 曾為多個組織提供建議並參與大型軟體工程專案,包括 Google、Oracle、eBay 和高盛。

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

最後瀏覽商品 (20)