Skip to content

Latest commit

 

History

History
812 lines (568 loc) · 39.2 KB

java-resources.md

File metadata and controls

812 lines (568 loc) · 39.2 KB

Resources of Java

Java - Write once, run anywhere.

First, solve the problem. Then, write the code.

Don't Repeat Yourself.

Content

  • I. Guidance & Roadmap
  • II. Books & Documentations
    • Java SE
    • Java Data Access
    • Java Web
  • III. Source Repositories
  • IV. Blog & Community
  • V. Others

I. Guidance & Roadmap

II. Books & Documentations

Java SE

beginner

  • The Java™ Tutorials
  • The Java Tutorial: A Short Course on the Basics (6th, 2014) by Raymond Gallardo - Cover Java 8
  • Core Java (13th, 2024) Volume I Fundamentals by S, Horstmann - Cover Java 21
  • The Java Programming Language (4th, 2005) by Ken Arnold, James Gosling, David Holmes
  • Java: A Beginner's Guide (10th, 2024) by Herbert Schildt
  • Head First Java (3rd, 2022) by Kathy Sierra
  • Java 8 in Action (2014) by Raoul-Gabriel Urma, Mario Fusco
  • Java: The Complete Reference (13th, 2024) by Schildt, Herbert
  • Learn Java the Easy Way: A Hands-On Introduction to Programming (2017) by Bryson Payne
  • Learn Java with Projects: A concise practical guide to learning everything a Java professional really needs to know (2023) by Dr Seán Kennedy

Master

  • Java SE 8 Documentation Link 1 Link 2
  • Java SE White Papers
  • The Java® Language Specification Java SE 8 Edition - DOC, PDF
  • JSR-133: Java Memory Model and Thread Specification (Java 1.5, 2004) - PDF
  • Effective Java (3rd, 2017, Cover Java 9) by Joshua Bloch
  • Thinking in Java (4th, 2006) by Eckel, Bruce
  • Java by Comparison: Become a Java Craftsman in 70 Examples by Simon Harrer, Jörg Lenhard, Linus Dietz
  • On Java 8 by Bruce Eckel
  • Java in a Nutshell: A Desktop Quick Reference (7th, 2019) by David Flanagan
  • Java Puzzlers by Joshua Bloch, Neal Gafter
  • Think Java: How to Think Like a Computer Scientist by Allen B. Downey
  • Java Cookbook: Problems and Solutions for Java Developers (4th, 2020) by Ian F. Darwin
  • Java Network Programming by Elliotte Rusty Harold
  • 阿里巴巴Java开发手册 by 杨冠宝
  • 码出高效:Java开发手册 by 杨冠宝
  • Java Generics and Collections: Speed Up the Java Development Process by Maurice Naftalin
  • Java Security by Scott Oaks
  • Bitter Java by Bruce A. Tate
  • 100 Java Mistakes and How to Avoid Them (2023) by Tagir Valeev

Modern Java Features

  • Core Java for the Impatient (3rd, 2022, Cover Java 17) (2nd, 2017, Cover Java 9) (1st, 2013, Cover Java 8) by Cay S.Horstmann
  • Modern Java in Action (2nd, 2018, Cover Java 9) by Raoul-Gabriel Urma, Mario Fusco
  • Modern Java Recipes: Simple Solutions to Difficult Problems in Java 8 and 9 (2017) by Kousen, Ken
  • Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications by Mak, Sander
  • The Java Module System (2019) by Nicolai Parlog

Concurrency Programming

Must Read

  • Java Concurrency in Practice (2006) by Goetz, Brian.
    This book is summative, and insightful, not a fundamental book. Before reading this book, you need to understand the basic concepts of Java concurrency. If you are a beginner for Java concurrency, we recommend you to read "The Java Tutorial: A Short Course on the Basics - chapter 13. Concurrency" that is friendly for a beginner.
  • Java Concurrency and Parallelism: Master advanced Java techniques for cloud-based applications through concurrency and parallelism (2024) by Jay Wang
  • Virtual Threads, Structured Concurrency, and Scoped Values: Explore Java’s New Threading Model (2024) by Ron Veen and David Vlijmincx
  • Mastering Concurrency Programming With Java 8 (2016) by Javier Fernández González
  • Mastering Concurrency Programming with Java 9 (2nd, 2017) by Javier Fernandez Gonzalez
  • Java Threads: Understanding and Mastering Concurrent Programming (3rd, 2004) by Scott Oaks, Henry Wong
  • Concurrent Programming in Java: Design Principles and Patterns (2nd, 1999) by Doug Lea
  • Programming Concurrency on the JVM: Mastering Synchronization, STM, and Actors by Venkat Subramaniam
  • Top 100 Java Multi-threading Interview Questions by Knowledge Powerhouse
  • 100 Inteview Questions: JAVA Concurrency (2023) by X.Y. Wang
  • Concurrency
    • The Art of Multiprocessor Programming by Maurice Herlihy, Nir Shavit
    • Grokking Concurrency (2024) by Kirill Bobrov
    • Seven Concurrency Models in Seven Weeks: When Threads Unravel (2014) by Paul Butcher

Some More

  • 图解Java多线程设计模式 (2017) by [日] 结城浩 [8.5, 184]
  • Java多线程编程实战指南(核心篇)by 黄文海 [9.2, 189]
  • Java多线程编程实战指南(设计模式篇) (2015) by 黄文海 [8.5, 51]
  • 实战Java高并发程序设计 (2015) by 葛一鸣, 郭超 [8.3, 266]
  • Java并发编程的艺术 (2015) by 方腾飞, 魏鹏, 程晓明 [7.5, 596]
  • Java并发编程之美 (2018) by 翟陆续 / 薛宾田 [7.7, 126]
  • Java并发实现原理:JDK源码剖析 by 余春龙 [7.7, 59]

Network Programming

TCP/IP

  • Unix Network Programming by W.Richard Stevens

Socket

  • TCP/IP Sockets in Java: Practical Guide for Programmers by Kenneth L. Calvert, Michael J. Donahoo
  • Java Network Programming by Harold, Elliotte Rusty [3.57, 113]

NIO

  • Java NIO by Hitchens, Ron [3.72, 18]
  • Netty in Action by Maurer, Norman
  • Netty权威指南 by 李林锋

Functional Programming

  • Mastering Lambdas: Java Programming in a Multicore World by Maurice Naftalin
  • Java 8 Lambdas: Pragmatic Functional Programming by Richard Warburton

Object-Oriented Programming

Reference Programming Language Resources - Programming Paradigms

Reactive Programming

  • Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications by Ben Christensen and Tomasz Nurkiewicz
  • Reactive Programming With Java 9: Build Asynchronous Applications with Rx.Java 2.0, Flow API and Spring WebFlux by Tejaswini Mandar Jog
  • Learning Reactive Programming with Java 8 by Nickolay Tsvetinov
  • Reactive Web Applications: Covers Play, Akka, and Reactive Streams by Manuel Bernhardt
  • Why Reactive ? by Konrad Malawski
  • Hands-On Reactive Programming in Spring 5: Build cloud-ready, reactive systems with Spring 5 and Project Reactor by Oleh Dokuka

Security

  • Java Security (2nd, 2001)by Scott Oaks
  • Beginning Cryptography with Java by David Hook

JVM Languages

Scala, Groovy, Closure, and Kotlin

  • Kotlin in Action by Dmitry Jemerov, Svetlana Isakova
  • Programming in Scala by Martin Odersky
  • Functional Programming in Scala by Rúnar Bjarnason
  • Groovy in Action by Dierk König

JVM Tuning

JVM Internals

  • The Java® Virtual Machine Specification Java SE 7 Edition - DOC
  • The Java® Virtual Machine Specification Java SE 8 Edition - DOC, PDF
  • The Java® Virtual Machine Specification Java SE 11 Edition - DOC, PDF
  • Oracle JRockit: The Definitive Guide (2010) by Marcus Hirt, Marcus Lagergren. A great book to understand JVM internals.
  • Inside the Java 2 Virtual Machine (2nd, 2000) by Bill Venners
  • 深入理解Java虚拟机: JVM高级特性与最佳实践 (3rd, 2019) by 周志明
  • 深入理解JVM字节码 by 张亚
  • Garbage Collection
    • The Garbage Collection Handbook: The Art of Automatic Memory Management by Jones, Richard [4.38, 40]
    • 垃圾回收的算法与实现 (2016) by 中村成洋 (8.2)
  • Others

For JVM Tuning

  • JVM Performance Engineering: Inside OpenJDK and the HotSpot Java Virtual Machine (2024) by Monica Beckwith
  • Java Performance: The Definitive Guide (2014) by Scott Oaks [4.38, 200]
  • Java Performance: In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond (2nd, 2020) by Scott Oaks
  • Java Performance (2011) by Binu John and Charlie Hunt [4.12, 200]
  • Java Performance Companion (2016) by Charlie Hunt [3.77]
  • Optimizing Java: Practical Techniques for Improving JVM Application Performance (2018) by Benjamin J. Evans, James Gough [4.37, 46]
  • The Well-Grounded Java Developer (2nd, 2022) by Benjamin Evans, Jason Clark, and Martijn Verburg
  • Troubleshooting Java Performance: Detecting Anti-Patterns with Open Source Tools (2017) by Erik Ostermueller
  • Java Performance Tuning (2nd, 2003) by Jack Shirazi [3.56]
  • Java程序性能优化-让你的Java程序更快、更稳定 (2012) by 葛一鸣 (8.1)
  • 实战Java虚拟机 (2015) by 葛一鸣 (8.1)
  • Java Performance and Scalability: A Quantitative Approach by Henry H. Liu
  • System Performance Analysis
    • Systems Performance: Enterprise and the Cloud (2nd, 2020) by Brendan Gregg
    • BPF Performance Tools by Brendan Gregg
    • Linux Observability with Bpf: Advanced Programming for Performance Analysis and Networking by David Calavera, Lorenzo Fontana
    • Software Performance and Scalability: A Quantitative Approach by Henry H. Liu

For HotSpot JVM

For JRockit JVM

JNI

JMX

Java RMI

Utility Library

JSON, XML, Email, Logging, Datetime, IO.

Unit Test

  • JUnit in Action (3rd, 2020) by Catalin Tudose
  • Practical Unit Testing with JUnit and Mockito by Tomek Kaczanowski
  • Testing Java Microservices: Using Arquillian, Hoverfly, AssertJ, JUnit, Selenium, and Mockito by Alex Soto Bueno, Andy Gumbrecht and Jason Porter
  • Java Testing with Spock by Konstantinos Kapelonis

Java Data Access

JDBC

JDBC Connection Pool

Java Persistence

  • High-Performance Java Persistence by Vlad Mihalcea
  • Pro JPA 2 in Java EE 8: An In-Depth Guide to Java Persistence APIs by Mike Keith
  • MyBatis
    • MyBatis Documentation
    • MyBatis Plus Documentation - HTML
    • Java Persistence with MyBatis 3 (2013) by K. Siva Prasad Reddy
    • MyBatis从入门到精通 by 刘增辉
    • MyBatis技术内幕 (2017) by 徐郡明
    • MyBatis 3源码深度解析 (2019) by 江荣波
  • Hibernate
    • Java Persistence with Hibernate: Revised Edition of Hibernate in Action by Bauer, Christian
    • Just Hibernate: A Lightweight Introduction to the Hibernate Framework (2014) by Madhusudhan Konda
  • Spring Data
    • Spring Data JPA - Reference Documentation - HTML
    • Spring Data: Modern Data Access for Enterprise Java by Mark Pollack, Oliver Gierke, Thomas Risberg
    • Understanding JPA 2.2: Java Persistence API by Antonio Goncalves
    • Java Persistence with Spring Data and Hibernate (2023) by Catalin Tudose

Java Web

Protocols

Web Servers

  • 深入理解Nginx by 陶辉
  • How Tomcat Works: A Guide to Developing Your Own Java Servlet Container by Budi Kurniawan, Paul Deck

Java Web

Java Servlet

  • Java Servlet Specification Version 4.0 - PDF
  • Java Servet API
  • Java Servlet Documentation - doc
  • Head First Servlets and JSP (2nd, 2008) by Bryan Basham
  • Murach's Java Servlets and JSP (3rd, 2014) by Joel Murach, Andrea Steelman
  • Java Servlet Programming by Jason Hunter, William Crawford

Web Pages / Template Engines

  • JavaServer Pages™ Specification, Version 2.0 - PDF
  • JavaServer Pages™ Specification, Version 2.3 - PDF

Java EE

  • Java EE Documentation - doc
  • Expert One-on-One J2EE Design and Development (2002) by Rod Johnson
  • Java EE 8 Application Development: Develop Enterprise applications using the latest versions of CDI, JAX-RS, JSON-B, JPA, Security, and more (2017) by David R. Heffelfinger
  • Java EE 7 Tutorial (5th, 2014) by Eric Jendrock
  • Java EE 7: The Big Picture (2014) by Danny Coward
  • Professional Java EE Design Patterns by Murat Yener, Alex Theedom
  • Java EE 7 Essentials by Arun Gupta
  • Core J2EE Patterns: Best Practices and Design Strategies by Dan Malks, Deepak Alur, and John Crupi (J2EE核心模式)
  • 深入分析Java Web技术内幕 by 许令波
  • Iron-Clad Java: Building Secure Web Applications by Jim Manico, August Detlefsen
  • Professional Java for Web Applications by Nicholas S. Williams
  • Real World Java EE Patterns--Rethinking Best Practices by Adam Bien
  • The Java EE Architect's Handbook: How to be a successful application architect for Java EE applications by Derek C. Ashmore
  • Effective Enterprise Java by Ted Neward

IoC/DI

AOP

  • The AspectJ Programming Guide - DOC
  • AspectJ in Action: Enterprise AOP with Spring Applications (2nd, 2009) by Ramnivas Laddad and Rod Johnson
  • AspectJ Cookbook: Aspect Oriented Solutions to Real-World Problems by Russ Miles

Web Frameworks

Spring Framework

The Spring Framework simplifies Java development.

  • Spring Framework Reference Documentation 3.2.18 - doc
  • Spring Framework Current Documentation - doc
  • Spring Framework libs-release
  • Spring Start Here (2021) by Laurentiu Spilca
  • Just Spring: A Lightweight Introduction to the Spring Framework (2011) by Madhusudhan Konda
  • Spring in Action (6h, 2022) by Craig Walls
  • Expert Spring MVC and Web Flow (2006) by Colin Yates, Seth Ladd
  • Expert One-On-One J2EE without EJB by Rod Johnson. It explains the why behind spring as well as the how to use it.
  • Spring 6 Recipes: A Problem-Solution Approach to Spring Framework by Marten Deinum, Daniel Rubio, Josh Long
  • Spring 5 Recipes: A Problem-Solution Approach by Marten Deinum, Daniel Rubio, Josh Long
  • Professional Java Development with the Spring Framework by Alef Arendsen, Juergen Hoeller, Rod Johnson, Thomas Risberg
  • Pro Spring 5: An In-Depth Guide to the Spring Framework and Its Tools by Chris Schaefer, Clarence Ho, and Rob Harrop
  • Spring 揭秘 (2009) by 王福强
  • Spring 3.x企业应用开发实战 by 陈雄华

Spring Boot

Spring Boot removes the friction and boilerplate code involved with developing a REST-based service.

  • Spring Boot Current Documentation - doc
  • Spring Boot in Action by Craig Walls
  • Spring Boot: Up and Running: Building Cloud Native Java and Kotlin Applications by Mark Heckler
  • Spring Boot in Practice (2022) by Somnath Musib
  • Learning Spring Boot 2.0
  • Spring Boot Persistence Best Practices: Optimize Java Persistence Performance in Spring Boot Applications (2020) by Anghel Leonard

Dropwizard

Dropwizard is a Java framework for developing RESTful web services. It combines several existing libraries and frameworks into a coherent package with a focus on simplicity, performance, and production readiness. Dropwizard is particularly well-suited for building microservices and is favored for its opinionated approach to the development lifecycle, emphasizing rapid development and deployment.

Quarkus

Quarkus is a Kubernetes-native, Java-based framework designed specifically for building cloud-native applications. Developed by Red Hat, Quarkus emphasizes developer productivity and minimal resource usage, making it ideal for microservices architecture and serverless computing.

Micronaut

Micronaut is a modern, JVM-based framework designed for building microservices and serverless applications. It was developed by Object Computing, Inc. and is known for its lightweight architecture, efficient dependency injection, and rapid startup times. Micronaut is particularly well-suited for cloud-native development, providing developers with the tools needed to create highly performant applications.

Vert.x

Vert.x is a toolkit for building reactive applications on the Java Virtual Machine (JVM). It provides a polyglot framework that supports a wide range of programming languages (including Java, Kotlin, Groovy, JavaScript, and Ruby) and is designed for high performance and scalability, making it suitable for modern cloud-native applications, microservices, and event-driven architectures.

Web Services

Microservices

Microservices are more than writing the code.

Microservices are more than the business logic. You need to think about the environment where you’ll run the services and how the services will scale and be resilient.

Microservices are nothing but an extension of RESTful web services with the main objective being to break up your code into small, distributed, and independent services for better management.

理解微服务 Click to expand!

简单理解:内存里的函数调用 => 网络接口调用。按模块分割后,交给不同部门各自更新维护,减少代码冲突和升级失败的地图炮。小项目上微服务有反作用。所有微服务组件都是围绕这件事展开的。

最关键的是服务本体 RPC 和为了方便大家调用和发布 RPC 的服务发现。然后就是为了保障服务质量的熔断,监控,多 DC 部署等。

微服务说到底只是一种思想,关键在与服务怎么规划和拆分。自己设计好服务的拆分,用 REST API,每个服务怎么管理也相对独立。

总体思路把控到,然后看看相应的实现组件就行了。1)业务分拆为独立的服务。2)业务之间的交互(服务之间的交互)。3)为了网络容错、发现、追踪问题而扩展的其他东西(异常监控、调用链、预警、熔断之类的,所谓服务治理)。

没用微服务,可能只是性能问题,堆硬件就可以了。用上微服务,怎么熔断,怎么监控,怎么发现,怎么容错,怎么通信...

没具体需求,你很难学会的。微服务体系说简单点就是为了解决远程调用这一个需求衍生出来的。你首先得有需要远程调用不可的业务,然后业务量大了,你就算不懂“微服务”这个词,最终你为了满足需求,还是会搞定一整套体系。

不是你不懂,是你没有场景。

微服务更多的开发和架构经验上升华,同时面对微服务带来的变化,必须对公司的组织架构和运维全方面改造升级。

  • Building Microservices: Designing Fine-Grained Systems (2nd, 2021) by Sam Newman
  • Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith (2019) by Sam Newman
  • Microservices in Action by Morgan Bruce

Spring Cloud

Spring Cloud provides a suite of tools for the discovery, routing, and deployment of microservices to the enterprise and the cloud.

  • Spring Cloud Documentation, Current Version - HTML, PDF
  • Spring Getting Started Guides - Spring
  • Spring Cloud Tutorial - Baeldung
  • The Beginner’s Guide To Spring Cloud - Ryan Baxter - YouTube
  • Spring Cloud Samples - GitHub
  • Microservices Patterns: With examples in Java (2018) by Chris Richardson
  • Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry (2017) by Josh Long, Kenny Bastani. (Some content is outdated. Expect a new version.)
  • Spring Microservices in Action (2nd, 2021) by John Carnells
  • Microservices with Spring Boot and Spring Cloud (2nd, 2021) by Magnus Larsson
  • Hands-On Microservices with Spring Boot and Spring Cloud (2019) by Magnus Larsson
  • Modernizing Enterprise Java: A Concise Cloud Native Guide for Developers (2021) by Markus Eisele, Natale Vinto
  • Cloud Native Spring in Action: with Spring Boot and Kubernetes (2022) by Thomas Vitale. (It was not published yet. But it's comming soon.)

Others

  • Designing Data-Intensive Applications by Martin Kleppmann
  • Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard
  • Microservices From Design to Deployment by Chris Richardson
  • Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization by Susan Fowler
  • Refactoring Databases: Evolutionary Database Design by Scott W. Ambler
  • Migrating to Cloud-Native Application Architectures by Matt Stine
  • Microservices AntiPatterns and Pitfalls by Mark Richards
  • Microservices in Production by Susan Fowler
  • Migrating to Microservice Databases by Edson Yanaga
  • Microservices for Java Developers A Hands-On Introduction to Frameworks and Containers by Christian Posta
  • Microservice Architecture: Aligning Principles, Practices, and Culture by Irakli Nadareishvili
  • Microservices: Flexible Software Architectures by Eberhard Wolff
  • Java Message Service: Creating Distributed Enterprise Applications by Mark Richards
  • Java Web Services: Up and Running by Martin Kalin
  • Restful Java with Jax-RS by Bill Burke
  • Restlet in Action: Developing RESTful web APIs in Java by Jerome Louvel, Thierry Templier, Thierry Boileau

Web Security

  • Iron-Clad Java: Building Secure Web Applications by Jim Manico, August Detlefsen
  • Spring Security

For more, see

Java Application Performance

Java Tools

JDK

Resources

Releases

README

JDK Tools

Maven

  • Maven Users Centre
    • Maven in 5 Minutes - Learn how to use Maven in 5 minutes. DOC
    • Getting Started Tutorial - An in depth tutorial once you've learned the basics. DOC
    • POM Reference. DOC
    • Settings Reference. DOC
  • Plugin Developers Centre
  • Maven Central Repository
  • Maven: The Definitive Guide
  • Apache Maven Cookbook by Raghuram Bharathan
  • Apache Maven 3.0 Cookbook by Srirangan
  • Maven by Example by Sonatype company. DOC, PDF
  • Maven: The Complete Reference by Sonatype company. DOC, PDF

Resources

Web Frontend

Reference Web Frontend Resource

Data Storage

Reference CS Advanced Domains Resources - Database Systems and Data Storage

DevOps & Test & Tools

Reference Software Development and Engineering

Distributed System

Reference CS Advanced Domains Resources - Distributed Systems

Java Tutorials

III. Source Repositories

Java Libraries

  • Google Guava Google Core Libraries for Java, 开源的Java库,谷歌很多项目使用它的很多核心库。这个库是为了方便编码,并减少编码错误。
  • comons-lang 一个被大量使用的工具包,都是一个一个的方法,适合新手学习。

Web Frameworks

  • spring-framework
  • spring-boot
  • Dagger 2. Dagger is a fully static, compile-time dependency injection framework for Java, Kotlin, and Android.
  • Flyweight
    • blade Lightning fast and elegant mvc framework for Java8
    • Google Guice a lightweight dependency injection framework
    • jfinal JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!
    • tiny-spring
    • AisMVC 一款仿SpringMVC轻便的mvc开发框架

ORM Frameworks

  • mybatis-3 MyBatis SQL mapper framework for Java
  • hibernate-orm Hibernate's core Object/Relational Mapping functionality

Network Frameworks

RPC Frameworks

Utilities

for JSON

for Building

for Deployment

for Testing

for HTTP Clients

Others

Web Server

Caching System

Distributed Log

Database Management System

Operating System


Management system scaffolds

Spring Boot

Spring Cloud

Others

  • JeePlus
  • FEBS 基于 Spring Boot 的权限管理系统
  • cms content management system
  • crud 万能快速原型系统
  • MCMS Java快速开发平台
  • funiture 企业级权限管理系统

Shop System

Education System

IM

Social

  • symphony 现代化社区(论坛/BBS/社交网络/博客)平台

Others

Tutorials

Some More

IV. Blog & Community

Personal Blog

Community

Social

  • Reddit
  • Hacker News
  • Medium
  • V2EX
  • 1point3acres

V. Others

Knowledge Summary

Resource Collections

Tutorials

Online Course Websites

Others

References

[1] What are the best programming blogs? - Quora

[2] Mastering Java - Goodreads

--END--