欢迎,Java 的潮流者

Spring Boot + Angular/React 一站式生成器

https://www.jhipster.tech

按 右箭头 来翻页继续 >

关于这个演示

  • 使用左后按键来翻页
  • 使用上下按键来翻内页
  • "ESC"按键查看所有页
  • 译者补充:按空格就行了

主要关于什么内容?

现代化的 Web 应用开发

现代化的 Web 应用

在现代,终端用户的需求已经进化,他们不再满足于缓慢的、非响应式的网站。他们更喜欢:

  • 漂亮的设计
  • 页面加载无需等待
  • 动态更新网页的片段

我们需要使用最新的 HTML5/CSS3/JavaScript 技术

开发者生产力

网站需要被快速地部署。

还要等一分钟来“部署”你的应用已经不再能被接受了。


我们需要正确的工具来完成这些任务!

生产环境就绪的软件

现代化的网站都需要支持巨大的同时在线用户数

使用大量的 RESTful ,会影响你的后台服务器


我们需要坚固的、高可用的服务器

我们的目标是解决这些问题


  • 一个漂亮的前端,使用最新的 HTML5/CSS3/JavaScript 技术
  • 一个坚固的、高质量的后端,使用最新的 Java/Caching/Data 技术
  • 全自动的连接起来,并伴随着安全和性能
  • 优秀的开发工具,使得生产力最大化

客户端技术

Yeoman, Webpack, Angular,React, Bootstrap

NPM

  • 快速和可靠的依赖管理
  • 用来安装和运行所有的客户端工具
                            npm install -g generator-jhipster
                        

Yeoman

Yeoman 提供了应用 生成器

  • 已经有很多生成器
  • 大部分面向 JavaScript 前端应用
  • 评分最高的生成器具有很高的质量
                            jhipster
                        

Webpack

现代的前端资源打包工具

  • 编译、压缩、优化前端代码
  • 精华工具来编译和热部署 Angular/React + TypeScript 代码
  • 产生高效的客户端生产包

BrowserSync

自动重加载应用的变化

  • 当代码编辑发生时,能自动刷新浏览器
  • 多个浏览器实时同步测试,使得变化可以得到快速的检查
                            npm start
                        

Jest

用 Jest 运行 JavaScript 单元测试

  • 它和 jsdom 一起工作,一个虚拟 DOM 技术
  • 非常 快,而且一直在后端运行
                            npm test
                        

Angular and React

两个最流行的 JavaScript 框架

  • JHipster 同时支持 Angular 和 React
  • 强大 & 易上手
  • 数据绑定,表单验证,国际化……全都开箱即用

Bootstrap

最棒的 CSS/JavaScript 响应式网站应用框架

  • 常用的 CSS 和 HTML 元素
  • 大量的 JavaScript 组件:菜单、导航栏、下拉框、告警……
                            
Hello, world!

服务端技术

Maven, Spring, Spring MVC REST, Spring Data JPA, Netflix OSS

Maven | Gradle

最流行的 Java 打包工具

  • 常用的、预定义好的目录结构和 goals
  • 和常用 IDE 集成
  • 完善的插件,包括支持 Spring Boot 和 Yeoman
                            
./mvnw spring-boot:run
                            
                            
./gradlew bootRun
                            
                        

Spring Boot

Spring 是事实上的 Java 应用标准

  • 控制反转、切面编程、抽象,来帮助简化开发
  • 快速且轻量级,同时极其强大
  • 开箱即用的 Spring Boot 配置
  • 动态加载
                            
@Service
@Transactional
public class UserService {

    @Autowired
    private UserRepository userRepository;

}
                            
                        

Netflix OSS

Netflix OSS 提供了用于微服务架构的一系列优秀的工具

  • Eureka - 服务注册,为负载均衡及故障转移服务。
  • Zuul - 动态路由的代理,监控,及安全控制。
  • Ribbon - 软负载均衡

Liquibase

管理数据库更新

  • 管理数据库脚本的更新
  • 和 Spring 以及 JPA 协同工作
  • 需要深入理解数据库及 ORM 概念

JPA

标准的 Java ORM 解决方案

  • Hibernate 作为底层支持
  • 非常完善,非常优秀的众多特性
  • 对新手稍微复杂!
                            
@Entity
public class User implements Serializable {

    @Id
    private String login;

}
                            
                        

Spring Data JPA

在 JPA 上层增加了扩展的语法特性

  • 自动创建 JPA repositories
  • 移除了大量的标准代码
                            
public interface PersistenceAuditEventRepository extends JpaRepository<PersistentAuditEvent, String> {

    List<PersistentAuditEvent>
        findByPrincipalAndAuditEventDateGreaterThan(String principal, LocalDateTime after);

}
                            
                        

MongoDB

可扩展的 NoSQL

  • 相对于 SQL 数据库和 JPA 的其他选择
  • 类似的代码:Spring Data MongoDB 和 Spring Data JPA 方式差不多
  • 更强扩缩性,简单易用

Couchbase

可扩展的 NoSQL

  • 相对于 SQL 数据库和 JPA 的其他选择
  • 类似的代码:Spring Data MongoDB 和 Spring Data JPA 方式差不多
  • 更强扩缩性,简单易用

Cassandra

可扩展的 NoSQL

  • 相对于 SQL 数据库和 JPA 的第二选择
  • 线性扩展和高可用
  • 支持性能强劲、极低隐患的关键任务应用

缓存

缓存技术是性能的关键技术

  • Ehcache 是最广泛使用的技术
  • HazelCast 也是个很棒的选择,具有分布式特性!
  • Hibernate 二级缓存,或者 Spring Caching 抽象
                            
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class User implements Serializable {

}
                            
                        

Spring Security

超安全框架

  • 领军工具,在各行业都被广泛使用
  • 加密 URLs 和 Java code (Spring Beans)
  • 可以和有状态 (cookies) 或者无状态的 (OAuth2/JWT) Web 应用架构协同工作

Spring MVC REST

最棒的 REST 框架 in Java

  • 完整的、高性能的 REST 解决方案
  • 超强的 Spring 支持,超强的测试支持
                            
@RestController
public class AccountResource {
    @PostMapping("/account")
    public void saveAccount(@RequestBody UserDTO userDTO) {
        userService.updateUserInformation(userDTO);
    }
}
                            
                        

Thymeleaf

服务端模板引擎

  • 当单页应用不够用时
  • 替代过时的 JSPs 和 JSTLs
  • 非常适合网页设计师的模板
                            

Hello, world

监控

为生产准备好了的,支持 Metrics

  • 监控 JVM, 应用服务器, Spring beans, 缓存, 还有更多!
  • JMX 或 Graphite 报表
                            
@Timed
public void saveAccount(@RequestBody UserDTO userDTO) {
    userService.updateUserInformation(userDTO);
}
                            
                        

云部署

发布到云上去!

  • 本地部署和云端部署都很方便!
  • Leading cloud providers like Cloud Foundry, Heroku and Amazon Web Services all provide specific tooling and deployment options

来认识一下 JHipster 吧

这么牛?

你以为是 吹的


在此文编写时 (3月, 2018年), JHipster 已经有了:

  • 417 贡献者,其中 21 位核心成员
  • 9,891 GitHub 星,以及 2,180 次 forks
  • 一百万次安装
  • 并且它还在加速成长

为什么?

我们见过很多很棒的技术

  • Webpack 和 Maven 可以友好地协作吗?
  • Angular 和 Spring MVC REST 呢?
  • Netflix OSS 和 Spring 呢?
  • 我们 保证 你想要舒服地一起使用上这些技术,并且安全、并且缓存、监控,这不会轻松的……

JHipster 将他们工作在一起

  • JHipster 创建了一个完整的应用工程,集成了所有这些技术
  • 所有组件都是开箱即用的
  • 你的 Webpack task 和 Maven goals 可以一起工作!
  • 你可以使用 Docker 来平滑地运行所有!

等等,还有更多!

  • "entity" 命令行代码构建工具可以创建完整的 JPA 模型,从数据库到 Angular
  • "import-jdl" 工具可以导入 JDL Studio 生成的 JDL 来创建完整的实体模型
  • "service" 工具可以创建 Spring 业务服务对象
  • "languages" 工具来添加国际化支持的语言
  • 极好地支持了 Spring Security: Ajax endpoints, 加密的 remember-me 功能, 审计...
  • 使用 Metrics 的监控页面

如果还不够,这里还有更多特性!

  • 完整支持创建微服务和网关应用
  • JHipster Registry (Netflix Eureka + Spring cloud config server),开箱即用
  • JHipster Console 使用 ELK (Elasticsearch + Logstash + Kibana) 监控,开箱即用
  • 支持 Docker
  • 更多的 JHipster 插件 来获取更多特性

生产环境功能

  • 特定的 Spring profile,支持 GZipping 和 HTTP caching headers
  • 用 Webpack 优化,压缩的 TypeScript & CSS
  • 可执行的 WAR 文件,支持监控
  • 自动部署到 Cloud Foundry, Heroku 和 AWS 的工具
  • "docker-compose" 工具用于生成 Docker 配置文件来发布微服务应用的生产环境

来构建第一个应用吧

10 分钟教程

安装 Yeoman

                            
npm install -g yo
npm install -g generator-jhipster
                            
                        

创建应用

使用内置的 Maven 运行
(并具有自动重载功能)

                            
jhipster
./mvnw
                            
                        

客户端自动重载

自动重载客户端代码 (HTML, CSS, TypeScript),使用 Webpack 和 Browsersync。编辑文件,浏览器会自动刷新:

                            
npm start
                            
                        

添加一个模型

                            
jhipster entity Foo
                            
                        

运行到生产环境

(使用 Docker 运行数据库)

                            
./mvnw -Pprod package
docker-compose -f src/main/docker/mysql.yml up -d
java -jar target/*.war
                            
                        

感谢您的关注

https://www.jhipster.tech