Getting Hip with
JUG Ostfalen, 24th Oct. 2019
Frederik Hahne
About me
Frederik Hahne
@atomfrede
atomfrede.gitlab.io
About me
- JHipster Core Team Member since 2015
- Gradle Stream Lead, Vue Maintainer
- JUG Paderborn Organizer
- Software Developer at wescale
Disclaimer:
I am a Noob
Greetings, Java Hipsters
Intro
Overview
Demo
How long does it take to setup a modern web application?
How long does it take to configure databases, security, api?
How long does it take to go to production?
What is JHipster?
+
/
_
=
What is JHipster?
+
_
=
What is JHipster
- Full Stack Application Development Platform
- 100% Open Source
- Best Practices & High Quality Code
- Community & Knowledge
JHipster in Numbers
- 14k+ Stars
- 33 Core Team Member
- 520+ Contributors
- 2 Java Champions
- 2 Books
- 1000000+ Installations
- 2 Conferences
Goals
A high-performance and robust Java stack on the server side with Spring Boot
A sleek, modern, mobile-first front-end with Angular, React and Bootstrap
A powerful workflow to build your application with Yeoman, Webpack and Maven/Gradle
Policies
technologies used by JHipster have their default configuration used as much as possible
only add options when there is sufficient added-value in the generated code
for the Java code, follow the default Intellij IDEA coding style
use strict versions for third-party libraries
Formatting...
https://github.com/jhipster/prettier-java
JHipster Users
Supporters
Options
Let's Code
// Installed node, java and git (optional)
npm install -g generator-jhipster
npm install -g generator-jhipster-vuejs
jhipster --blueprints vuejs
Gettin' Started
Demo
- Generate a basic library management application
- Short Worktrough
- Generate CRUD entities
- Small adaption to the code
- Build with Gitlab CI
- Deploy to Heroku
- Inspired by Matt Raible's introduction
The real java hipster
Side-by-Side Approach
@SuppressWarnings("unused")
@Repository
public interface BorrowRepository extends JpaRepository<Borrow, Long> {
}
@SuppressWarnings("unused")
@Repository
public interface BorrowRepositoryCustom extends BorrowRepository {
}
Side-by-Side Approach
import BookCopyService from "@/entities/book-copy/book-copy.service";
export default class BookCopyServiceCustom extends BookCopyService {
}
https://www.slideshare.net/agoncal/custom-and-generated-code-side-by-side-with-jhipster
https://dev.to/antonioortizpola/separating-the-jhipster-layout-from-a-custom-ui-implementation-55i8
Going to Production
- Start with less
- Don't touch generated code
- Keep JDL up to date
- Use same DB in Dev & Prod
- Integrate testcontainers
- Use DTO & Services
- Most likely you will add a custom web api
https://atomfrede.gitlab.io/2019/05/jhipster-with-testcontainers/
https://github.com/intesys/generator-jhipster-testcontainers
start.jhipster.tech
create application via jdl
What else?
- Kotlin Blueprint
- Node Blueprint
- .net Blueprint
- Quarkus/Micronaut Blueprint
- Spring Boot 2.2
- Neo4J Support
- Modulith
- Micro Frontends
https://github.com/odrotbohm/moduliths
https://github.com/jhipster/generator-jhipster/issues/9967
- jhipster.tech
- github.com/jhipster
- twitter.com/jhipster
- https://stackoverflow.com/tags/jhipster/info
- https://gitter.im/jhipster/generator-jhipster
- jhipster-book.com
- packtpub.com/application-development/full-stack-development-jhipster
jhipster.tech/bug-bounties
Question?
Question?
Getting Hip with JHipster
By atomfrede
Getting Hip with JHipster
Slides for my Talk at JUG Ostfalen Oct. 2019
- 1,337