Java - Write once, run anywhere.
First, solve the problem. Then, write the code.
Don't Repeat Yourself.
- I. Guidance & Roadmap
- II. Books & Documentations
- Java SE
- Java Data Access
- Java Web
- III. Source Repositories
- IV. Blog & Community
- V. Others
- 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
- 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
- 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
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]
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 李林锋
- Mastering Lambdas: Java Programming in a Multicore World by Maurice Naftalin
- Java 8 Lambdas: Pragmatic Functional Programming by Richard Warburton
Reference Programming Language Resources - Programming Paradigms
- 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
- Java Security (2nd, 2001)by Scott Oaks
- Beginning Cryptography with Java by David Hook
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 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
- Java Objects Inside Out by Aleksey Shipilёv
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
- Java SE Core Technologies
- Java SE HotSpot at a Glance
- Java SE 8 HotSpot Virtual Machine Garbage Collection Tuning Guide
- Java HotSpot VM Options - JDK 7 and earlier
- Java HotSpot VM Options - JDK 8
- Java SE 8 Troubleshooting Guide - Monitoring Tools
- Java Virtual Machine Technology
- The HotSpot Group - source code, documentation
For JRockit JVM
Java Diagnostic Tool
- Java™ Remote Method Invocation API, Java 7
- RMI Whitepaper: Java Remote Method Invocation Distributed Computing for Java
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 JDBC API
- JDBC Home Page - Java SE Technologies - Database - doc
- JDBC Basics Tutorial
- MySQL Connector/J 5.1 Developer Guide
- JDBC Database Access with Java: A Tutorial and Annotated Reference by Graham Hamilton and Rick Cattell
- JDBC API Tutorial and Reference by Maydene Fisher
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 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 江荣波
- 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 JPA
- 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
JOOQ
DOMA
- HTTP: The Definitive Guide by David Gourley, Brian Totty
- RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
- 深入理解Nginx by 陶辉
- How Tomcat Works: A Guide to Developing Your Own Java Servlet Container by Budi Kurniawan, Paul Deck
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
- Inversion of control - Wikipedia
- The Dependency Inversion Principle - Robert C. Martin
- Inversion of Control Containers and the Dependency Injection pattern - Martin Fowler
- Dependency Injection Principles, Practices, and Patterns (2019) by Mark Seemann, Steven van Deursen
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
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 Framework supported versions
1. Spring Framework and JDK versions
- Spring Framework 7.0.x: JDK 17-27 (expected)
- Spring Framework 6.2.x: JDK 17-25 (expected)
- Spring Framework 6.1.x: JDK 17-23
- Spring Framework 6.0.x: JDK 17-21
- Spring Framework 5.3.x: JDK 8-21 (as of 5.3.26)
2. Spring Framework and JavaEE versions
- Spring Framework 7.0.x: Jakarta EE 11 (jakarta namespace)
- Spring Framework 6.2.x: Jakarta EE 9-10 (jakarta namespace)
- Spring Framework 6.1.x: Jakarta EE 9-10 (jakarta namespace)
- Spring Framework 6.0.x: Jakarta EE 9-10 (jakarta namespace)
- Spring Framework 5.3.x: Java EE 7-8 (javax namespace)
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
Spring Boot supported versions
Spring Boot 3.x
- JDK 17+
- mybatis-spring-boot-starter v3+
- mybatis-plus-boot-starter: latest version
Spring Boot 2.x
- JDK 8~21
- mybatis-spring-boot-starter v2.x
- mybatis-plus-spring-boot3-starter: latest version
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.
- Dropwizard. A Java framework for developing ops-friendly, high-performance, RESTful web services.
- Dropwizard - Getting Started
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.
- Quarkus. A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards.
- Quarkus - Get Started
- Quarkus - Guides
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.
- Micronaut. A modern, JVM-based, full-stack framework for building modular, easily testable microservice and serverless applications.
- Micronaut Documentation
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.
- Vert.x. Reactive applications on the JVM.
- Vert.x Documentation
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)为了网络容错、发现、追踪问题而扩展的其他东西(异常监控、调用链、预警、熔断之类的,所谓服务治理)。
没用微服务,可能只是性能问题,堆硬件就可以了。用上微服务,怎么熔断,怎么监控,怎么发现,怎么容错,怎么通信...
没具体需求,你很难学会的。微服务体系说简单点就是为了解决远程调用这一个需求衍生出来的。你首先得有需要远程调用不可的业务,然后业务量大了,你就算不懂“微服务”这个词,最终你为了满足需求,还是会搞定一整套体系。
不是你不懂,是你没有场景。
微服务更多的开发和架构经验上升华,同时面对微服务带来的变化,必须对公司的组织架构和运维全方面改造升级。
- 为什么要用微服务
系统架构本质是组织架构的表现。Conway's law (康威定律):团队结构设计的系统将不可避免地产生与团队沟通结构相一致的设计。
微服务的两个最大的意义:独立发布和独立伸缩。
微服务更像是「鸡蛋不放一个篮子里」,各种服务不会一起挂,局部服务挂了直接熔断降级,不影响其他 p0 服务正常就行;但是单体应用就会受木桶理论影响,一堆的服务要为某一个短板服务买单。
遇到一个很实在的问题,系统有两大核心接口,有一个接口耗时长,有一个耗时短。如果耗时长的接口占用了 io 线程,另一个耗时短的接口就没法处理,这时候应该把耗时长的单独部署出来。
微服务确实浪费计算机资源,但是可以分散团队各自独立开发微服务。
为什么说单体有并发问题?单体服务,又不是只部署一台服务器(可以负载均衡部署多套)🤣🤣🤣如果业务不是特别复杂,单体没啥问题,有性能问题,升级服务器就行。
单体最大的问题是单点故障,能接受就用单体。
微服务是一种拆分的思想。当业务和项目规模扩大之后,为了在某些高压力的模块上能够做到水平扩展,自然会将这个模块拆成无状态的子服务,随之就会引入 mq 等中间件用来同步状态和通信。为了能够降低服务间调用和配置管理的负担,就会引入了配置中心和注册中心。微服务化是一种循序渐进的过程,上来就全盘微服务,成本太高了。楼上说的单体项目集群部署,不也是微服务的思想吗。所以项目刚开发的时候应该做好模块分割,模块间通信尽量做成事件机制,为以后可能的微服务改造打好基础。
用单体还是用微服务是看团队人数的多少决定的。
1.你们几千个人了,肯定是按职能,各个团队开发自己的服务。微服务还是挺好用的。
2.如果你们只有几个人,那还是单体吧。微服务没必要。
看你业务,组织架构是怎么样的吧。一般小公司确实不需要微服务,微服务和崩溃没必然联系,单体也是可以多机部署的。
组织即架构。
如果公司技术团队几个人,那么单体服务是比较合适的;如果达到 10 人,那么建议拆成两三个服务。
基本上每三个人维护一个服务是比较合适的。
不要迷信微服务,现在 Java 的性能不弱,而且做水平扩展和负载均衡,跟微服务也无关。而且单体服务的性能一定是要强于微服务的,方法调用和远程调用哪个更快? 微服务的诞生和敏捷开发的模式有很强的相关性,各个团队的服务在开发层面互不干扰,至少不会天天去解冲突。但如果就你们一波人在做,核心业务也只有一个,那完全没必要为了微服务而微服务。
- 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
Some more
- 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
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.)
- Apache Dubbo. A Cloud-Native Microservice Framework. Build apps with built-in rpc, traffic management, security, observability support that can deploy on kubernetes and vm.
- nacos. An easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
- apollo. A reliable configuration management system suitable for microservice configuration management scenarios.
- Apache Kafka. An open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.
- canal. 阿里巴巴 MySQL binlog 增量订阅&消费组件。
- spring-cloud-alibaba. Provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.
- xxl-job. A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
- incubator-seata. An easy-to-use, high-performance, open source distributed transaction solution.
- flink. A framework and distributed processing engine for stateful computations over unbounded and bounded data streams.
- Hystrix. A latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.
- skywalking. An open-source APM system that provides monitoring, tracing and diagnosing capabilities for distributed systems in Cloud Native architectures.
- Sentinel. A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件).
- rocketmq. Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications.
- shardingsphere. Empowering Data Intelligence with Distributed SQL for Sharding, Scalability, and Security Across All Databases.
- cat. CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
- Iron-Clad Java: Building Secure Web Applications by Jim Manico, August Detlefsen
- Spring Security
- Spring Security Reference Documentation
- Spring Security in Action (2nd, 2024) by Laurentiu Spilca
For more, see
Resources
Releases
README
JDK Tools
- Maven Users Centre
- 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
Reference Web Frontend Resource
Reference CS Advanced Domains Resources - Database Systems and Data Storage
Reference Software Development and Engineering
Reference CS Advanced Domains Resources - Distributed Systems
General
- Google Guava Google Core Libraries for Java, 开源的Java库,谷歌很多项目使用它的很多核心库。这个库是为了方便编码,并减少编码错误。
- comons-lang 一个被大量使用的工具包,都是一个一个的方法,适合新手学习。
- hutool. A set of tools that keep Java sweet.
JSON parser
Testing
HTTP Clients
Others
- WxJava. 微信开发 Java SDK ,支持包括微信支付,开放平台,小程序,企业微信,视频号,公众号等的后端开发
- keycloak. Open Source Identity and Access Management For Modern Applications and Services
- Swagger
- ddpush 国人开发的千万级推送框架
- log4j 一个知名的日志处理的jar包
- easyexcel. 快速、简洁、解决大文件内存溢出的java处理Excel工具。
Web frameworks
- spring-framework
- spring-boot
- Dagger 2. Dagger is a fully static, compile-time dependency injection framework for Java, Kotlin, and Android.
Flyweight web frameworks
- 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开发框架
JDBC
- druid. 阿里云计算平台DataWorks 团队出品,为监控而生的数据库连接池
- HikariCP. 光 HikariCP・A solid, high-performance, JDBC connection pool at last.
ORM Frameworks
- mybatis-3 MyBatis SQL mapper framework for Java
- hibernate-orm Hibernate's core Object/Relational Mapping functionality
Redis Client
- RxJava. Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
Build tools
Operation tools
IDEs
Database tools
- dbeaver. Free universal database tool and SQL client
- Chat2DB. AI-driven database tool and SQL client, The hottest GUI client, supporting MySQL, Oracle, PostgreSQL, DB2, SQL Server, DB2, SQLite, H2, ClickHouse, and more.
Java tools
- arthas. Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas。
Browser automation
- selenium. A browser automation framework and ecosystem.
Others
- DoKit. 一款面向泛前端产品研发全生命周期的效率平台。
Full-text search engines
MQ
Cloud
- spring-cloud
- spring-cloud-alibaba. Provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.
RPC Frameworks
Service discovery
- nacos. An easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
Configuration
- apollo. Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.
Others
- canal. 阿里巴巴 MySQL binlog 增量订阅&消费组件
- xxl-job. A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
- incubator-seata. An easy-to-use, high-performance, open source distributed transaction solution.
- shardingsphere. Empowering Data Intelligence with Distributed SQL for Sharding, Scalability, and Security Across All Databases.
- flink
- Hystrix. A latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.
- skywalking. APM, Application Performance Monitoring System
- Sentinel. A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
- cat. CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
Spring Boot
- Jeecg-boot ⭐️37.4k
- ruoyi-vue-pro ⭐️23.2k
- eladmin ⭐️20.7k
- vue-admin-better ⭐️15.9k
- hsweb-framework ⭐️8.2k
- RuoYi ⭐️5.2k
- RuoYi-Vue ⭐️2k
- RuoYi-Vue-Plus ⭐️749 + plus-ui
- Guns ⭐️3.7k
- hope-boot (or hope-plus) ⭐️3.3k
- erupt ⭐️2.4k
- mall-tiny ⭐️1.8k
- ballcat ⭐️1.4k
- AgileBoot-Back-End ⭐️1.4k
- RuoYi-flowable ⭐️315
- BootDo 基于 Springboot 和 Mybatis 的后台管理系统
- MAGA. make java great again
Spring Cloud
- YunaiV/yudao-cloud ⭐️15.1k
- SpringCloud ⭐️8.5k
- SpringBlade ⭐️6.3k
- pig ⭐️5.5k
- iBase4J ⭐️1.6k
- RuoYi-Cloud ⭐️1.1k
Others
- JHipster. JHipster is a development platform to quickly generate, develop, and deploy modern web applications & microservice architectures.
- halo. 强大易用的开源建站工具。
- JeePlus
- FEBS 基于 Spring Boot 的权限管理系统
- cms content management system
- crud 万能快速原型系统
- MCMS Java快速开发平台
- funiture 企业级权限管理系统
- macrozheng/mall 电商系统
- litemall. 又一个小商城。litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端
- macrozheng/mall-swarm
- newbee-ltd/newbee-mall
- javashop 网店系统
- shopweb 仿淘宝的B2C商城项目
- miaosha 秒杀系统设计与实现
- Telegram. Telegram for Android source.
- wildfirechat
- Kahla.App
- symphony 现代化社区(论坛/BBS/社交网络/博客)平台
- Stirling-PDF. Locally hosted web application that allows you to perform various operations on PDF files.
- proxyee-down. http下载工具,基于http代理,支持多连接分块下载。
- drp DRP系统
- social-sdk 社交平台的接口的Java库
- beauty_ssm_cluster 对”优雅的SSM框架“进行完善
Tutorials
- spring-boot-examples
- tutorials The "REST With Spring" Course
Trending
Personal Blog
- Peter Norvig
- JOEL ON SOFTWARE
- CODING HORROR
- BlogsDope
- Techie Delight
- visitorpanel
- SCOTT HANSELMAN
- sanwebcorner
- 酷壳 - 左耳朵耗子
- 阮一峰的网络日志
- 云风的 BLOG
- 小胡子哥博客
Community
- Stack Overflow
- ibm developerworkers
- InfoQ
Social
- Hacker News
- Medium
- V2EX
- 1point3acres
Knowledge Summary
- Java 全栈知识体系
- Java工程师成神之路 - github
- advanced-java - github Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务等领域知识。
- JavaGuide - github 涵盖大部分Java程序员所需要掌握的核心知识。
- CS-Notes - github 技术面试必备基础知识。
- stackoverflow-java-top-qa & stackoverflow上Java相关回答整理翻译
- Front-end-tutorial - github 前端回忆录
Resource Collections
- Awesome Java - A curated list of awesome Java frameworks, libraries and software
- be-a-professional-programmer - github 成为专业程序员路上用到的各种优秀资料、神器及框架
- awesome-java - github awesome frameworks, libraries and software
- awesome-java-cn - github Java资源大全中文版,包括开发库、开发工具
- links - github Web 开发相关资源、网站、工具推荐
Tutorials
Online Course Websites
- BEST PROGRAMMING LANGUAGE FOR ME
- CLASS CENTRAL
- COURSERA
- UDACITY
- edx
- DATACAMP
- ALISON
- MIT OPENCOURSEWARE
- CODECADEMY
- NPTEL
Others
- GitHub Rank GitHub 排行榜
- COLLEGESTASH - online course
- engineering-blogs
- 11 best web development blogs you should be reading right now
- HackSource– 18,510 programming tutorials for developers
- java-bible - github 技术摘要
[1] What are the best programming blogs? - Quora
[2] Mastering Java - Goodreads
--END--