About This Book
- Book History
- The Foojay Community
- Contributing to this Book
- How to use this book
- The Authors
- A N M Bazlur Rahman
- Frank Delporte
- Geertjan Wielenga
- Hanno Embregts
- Jan Ouwens
- Jan-Hendrik Kuperus
- Julien Lengrand-Lambert
- Ko Turk
- Maarten Mulders
- Markus Westergren
- Simon Martinelli
- Vasco Veloso
- Legal Notes
Introduction
- Towards an Understanding of Sustainable Java Software Development
- What is Sustainability?
- What is Sustainability to us?
- Why is Sustainability important now?
- But AI will fix this, right?
- What is Sustainable Software Engineering?
Overview of Basic Concepts
- Architecture Shapes Sustainability
- Build Caching and Automation
- Business Case for Sustainability
- Career Sustainability
- Cloud Paradox
- Collective Action Multiplies Impact
- Data Has Weight
- Fair Trade Software
- Feedback Loop Between Code and Wellbeing
- Five Rs: Refuse, Reduce, Reuse, Repurpose, Recycle
- Human-Readable Data Is Not Free
- Investing in Longevity
- LightSwitchOps: The Lost Art of Turning Things Off
- Math of Marginal Gains
- Measurement as the Foundation of Optimization
- Observability for Efficiency
- Power of Saying No
- Stop Chasing Nines
- Thinking Before Coding
Chapter 1: Fair Trade Software
- The Justice Dimension of Sustainability
- Software’s Raw Materials
- The Paradox of Free
- What Is a Fair Price for Something Intentionally Free?
- Toward Fair Trade Software
- 1. Transparency about our supply chains
- 2. Contributing back proportionally
- 3. Respecting maintainer well-being
- 4. Supporting the ecosystem, not just individual projects
- Practical Steps for Organizations
- 1. Establish a sustainability budget
- 2. Audit your dependencies
- 3. Contribute upstream
- 4. Sponsor strategically
- 5. Build sustainability into procurement
- Software Architecture and Sustainable Choices
- Beyond Open Source: The Broader Picture
- Conclusion: Conscious Choices in Software Development
Chapter 2: Stopping the Data Madness
- Why Should Data Between Services be Human-Readable?
- Bits and Bytes
- Byte Data in Electronics
- Use the Power of the Code
- Use the Power of the Tools
- Think Before You Send
Chapter 3: Impact of Architecture
- Gathering Requirements
- Deployment Architecture
- The Sustainability Cost of Distribution
- Modular Monolith: The Sustainable Middle Ground
- When Microservices Are Justified
- Architectural Considerations
- Communication Styles
- Data Redundancy
- Efficient Resource Usage
- Application-Level Caching
- API Design for Efficiency
- Scaling for Sustainability
- Scale-to-Zero
- Right-Sizing and Auto-Scaling
- Conclusion
Chapter 4: Career and Wellbeing
- Introduction
- Java’s Evolution and Developer Wellbeing
- How Java Supports Developer Wellbeing
- The relationship between code quality and personal sustainability
- Understanding Sustainable Career Development
- What is Career Sustainability for Java Developers?
- Why Career Sustainability Matters
- The Sustainability Mindset Shift
- Sustainability Through Career Phases
- Sustainable Career Development Framework
- Inner Development Goals for Java developers
- Being
- Relating
- Thinking
- Collaborating
- Acting
- Sustainable Habits for Developers
- Physical training
- Sharing Knowledge Sustainability
- Automation for Sustainability
- Focus
- Reflect
- Empathy
- Simplify
- Mentorship and Community
- Mentorship and Community: Growing Together
- Finding a Java Mentor
- The Benefits of Having a Mentor
- Becoming a Mentor Yourself
- Community Involvement and Knowledge Sharing
- The Mentorship Lifecycle
- Action Plan for Career Sustainability
- Building Your Sustainability Roadmap
- Implementing Your Plan Through Habit Stacking
- Your Next Steps
- Conclusion: Your Sustainable Java Journey
- The Ripple Effect of Sustainable Practices
- A Call to Action: Beginning Your Sustainable Career Journey
- The Legacy of Sustainable Development
Chapter 5: Sustaining Success: Java’s Evergreen Appeal in a Rapidly Changing Tech Landscape
- Longevity and Evolution of Java
- Broad Applicability
- Stable Ecosystem
- Community and Support
- Employment Opportunities
- Scalability and Performance
- Slow Rate of Obsolescence
Chapter 6: Simple things you can do right now
- Configure build caching
- Enable local caching
- Enable remote caching
- Make a donation to a charity
Chapter 7: Java as a Scripting Language: Sustainable Code from Day One
- The Sustainability Case for Java Scripts
- Running Java Source Files Directly
- Shebang Scripts: Native Executable Java
- Multi-File Programs: Sustainable Growth
- Compact Source Files: Maximum Signal, Minimum Noise
- The IO Class: Simple Console Operations
- Practical Patterns for Sustainable Scripts
- File Processing: Let the Platform Do the Work
- HTTP Requests: Modern and Efficient
- System Commands: When Shell Integration Is Needed
- Database Queries: JDBC Still Works
- JSON Processing: The Honest Reality
- Feature Status in Java 25
- Building a Sustainable Script Library
- Conclusion: Sustainable by Design
