A multi-module Java "playground" for Longwood student interns/alumni to demonstrate understanding of key software design principles, while learning some industry techniques and tools!
This project is divided into multiple modules with various degrees of "scaffolding" for you to complete or design from scratch.
Ideally, you will complete this project feeling much more equipped to work with Java in the industry, or even create projects on your own!
These assignments are not intended to be gospel or cover all possible bases, but they will hopefully help you understand what can make code readable and maintainable for years to come.
Modules I to III: Covers both old/new material, some pertaining to Java itself or software development as a whole
Module IV: Demonstrates the high quality "off the shelf" functionality that modern frameworks can offer
Module V: Best suited for graduates and/or people with prior significant exposure to Java
Youtube tutorials to be included for each Tier (WIP)
Tier I: Playing in the Vault
- What is Domain Driven Design (DDD)
- Dependency Injection/Inversion of Control (IOC)
- Encapsulation, Separation of Concern and Design By Contract
- JavaDoc: How to use it and why it's important
Tier II: Making Bank (Accounts)
- What is Failing Fast and Offensive/Defensive Programming?
- What are Annotations?
- Lombok: Boilerplate Be Gone!
- Polymorphism
- Validation Libraries
- Unit Testing with JUnit 5
Tier III: Bringing Home The Bankon
- Working with JSON
- Service Oriented Architecture
- Complete a business process/workflow from start to finish
- TBD
(BONUS) Tier IV: Banking With (Spring) Boot
- Light intro to the Spring Boot Framework
- RESTful APIs & Best Practices
- Swagger
(BONUS) Tier V: Java, the Double Shot
- Lazy Evaluation
- Optionals
- Streams
- Lambda Functions and "Functional" Iteration
- Switch Expressions (Switch Case's Cooler Twin)
- This repository uses Gradle to manage its dependencies
- Ensure you have the Java Development Kit (JDK) installed on your machine and that the $JAVA_HOME env. variable is set appropriately
- Install VSCode
- Install the following VSCode extensions:
- "Extension Pack for Java" by Microsoft
- "Gradle for Java" by Microsoft
- "Test Runner for Java" by Microsoft
- (Optional) "Live Share" by Microsoft; allows real-time "Google Docs" style editing with your peers!
- To install the project's dependencies, you have multiple options:
- Under the Explorer tab, (accessed via View > Explorer) navigate to Gradle Projects > tier-one and select "tier-one > tasks > build > build"
- If it doesn't appear as an option, right click on tier-one/build.gradle and select "Show Gradle Tasks"
- Under the Explorer tab, (accessed via View > Explorer) navigate to Gradle Projects > tier-one and select "tier-one > tasks > build > build"
- To execute the program, if necessary, navigate to application/run in Gradle's Tasks
Bear with me, as you might encounter an error or two during setup, depending on how accurate my crash course instructions are :)
Austin Youngerman austin.youngerman@live.longwood.edu