首页 > 数据库 >Oracle JDK 和 OpenJDK 的对比 思维导图 代码示例(java 架构)

Oracle JDK 和 OpenJDK 的对比 思维导图 代码示例(java 架构)

时间:2024-11-23 11:01:06浏览次数:3  
标签:java String JDK 示例 OpenJDK title Oracle public

Oracle JDK 和 OpenJDK 的对比

Oracle JDK 和 OpenJDK 是两个广泛使用的 Java 开发工具包,它们有很多相似之处,但也存在一些差异。以下是它们的主要区别:

1. 许可证
  • Oracle JDK
    • 商业许可证。
    • 免费用于开发和测试,但在生产环境中使用需要购买商业许可证。
  • OpenJDK
    • 开源许可证(GPLv2 with Classpath Exception)。
    • 完全免费,可以在任何环境中使用。
2. 功能和性能
  • Oracle JDK
    • 包含一些额外的工具和功能,如:
      • Java Flight Recorder (JFR):用于性能监控和故障诊断。
      • Java Mission Control (JMC):用于性能分析和管理。
    • 在某些情况下,Oracle JDK 可能会有一些性能优化。
  • OpenJDK
    • 提供了与 Oracle JDK 类似的功能。
    • 不包含 Oracle JDK 中的一些专有工具(如 JFR 和 JMC)。
    • 性能通常与 Oracle JDK 相当。
3. 更新和支持
  • Oracle JDK
    • 提供长期支持(LTS)版本。
    • 提供定期的安全更新和技术支持。
  • OpenJDK
    • 社区驱动,更新频繁。
    • 通常由各个发行版的维护者提供支持。
4. 使用场景
  • Oracle JDK
    • 适合企业级应用,特别是需要长期支持和高级技术支持的场景。
  • OpenJDK
    • 适合开源项目和个人开发者,特别是在成本敏感的场景中。

思维导图概念框架

Java Development Kits
├── Oracle JDK
│   ├── 许可证
│   │   └── 商业许可证(免费用于开发和测试,生产环境需购买)
│   ├── 功能和性能
│   │   ├── 额外工具
│   │   │   ├── Java Flight Recorder (JFR)
│   │   │   └── Java Mission Control (JMC)
│   │   └── 性能优化
│   ├── 更新和支持
│   │   ├── 长期支持(LTS)版本
│   │   └── 定期安全更新和技术支持
│   └── 使用场景
│       └── 企业级应用
├── OpenJDK
│   ├── 许可证
│   │   └── 开源许可证(GPLv2 with Classpath Exception)
│   ├── 功能和性能
│   │   ├── 类似于Oracle JDK的功能
│   │   └── 不包含Oracle JDK中的专有工具
│   ├── 更新和支持
│   │   ├── 社区驱动,更新频繁
│   │   └── 发行版维护者提供支持
│   └── 使用场景
│       └── 开源项目和个人开发者

Java架构代码示例

假设我们有一个简单的图书管理系统,我们将使用MVC架构模式来设计。

Model (模型层)
public class Book {
    private String id;
    private String title;
    private String author;

    // 构造方法
    public Book(String id, String title, String author) {
        this.id = id;
        this.title = title;
        this.author = author;
    }

    // Getter 和 Setter 方法
    public String getId() { return id; }
    public void setId(String id) { this.id = id; }
    public String getTitle() { return title; }
    public void setTitle(String title) { this.title = title; }
    public String getAuthor() { return author; }
    public void setAuthor(String author) { this.author = author; }
}
View (视图层)
public class BookView {
    public void displayBook(Book book) {
        System.out.println("书名: " + book.getTitle());
        System.out.println("作者: " + book.getAuthor());
    }
}
Controller (控制层)
public class BookController {
    private Book model;
    private BookView view;

    public BookController(Book model, BookView view) {
        this.model = model;
        this.view = view;
    }

    public void setBookDetails(String id, String title, String author) {
        model.setId(id);
        model.setTitle(title);
        model.setAuthor(author);
    }

    public void displayBookDetails() {
        view.displayBook(model);
    }
}
应用入口
public class Main {
    public static void main(String[] args) {
        // 创建模型对象
        Book book = new Book("", "", "");

        // 创建视图对象
        BookView view = new BookView();

        // 创建控制器对象
        BookController controller = new BookController(book, view);

        // 设置图书详情
        controller.setBookDetails("1", "Effective Java", "Joshua Bloch");

        // 显示图书详情
        controller.displayBookDetails();
    }
}

小结

通过上述的解释和示例,我们可以看到Oracle JDK和OpenJDK的主要区别以及如何使用Java MVC架构模式来构建一个简单的应用程序。Oracle JDK更适合企业级应用,而OpenJDK则更适合开源项目和个人开发者。希望这能帮助你更好地理解和选择合适的Java开发工具包。

标签:java,String,JDK,示例,OpenJDK,title,Oracle,public
From: https://blog.csdn.net/qq_33240556/article/details/143849541

相关文章

  • Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with
    一、现象在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Datatruncation:CannotcreateaJSONvaluefromastringwithCHARACTERSET'binary'.​‍报错信息:Cause:com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:......
  • java: 警告: 源发行版 17 需要目标发行版 17,怎样解决
    这个警告信息“java:警告:源发行版17需要目标发行版17”通常意味着你的项目代码使用了Java17的特性,但是编译器的目标版本设置却不是Java17,这可能会导致编译和运行时错误。为了解决这个问题,你可以采取以下几种方法之一:确保IDE和JDK版本一致:检查你的开发环境(如IntelliJID......
  • JavaScript 运行机制
    JavaScript是单线程的脚本语言,其运行机制主要基于事件循环(EventLoop)。执行栈(CallStack)执行栈是一个存储函数调用的栈结构。当JavaScript代码开始执行时,首先会有一个全局执行上下文(GlobalExecutionContext)被压入执行栈。当遇到函数调用时,一个新的函数执行上下文会被创......
  • JavaScript语法基础——变量,数据类型,运算符和程序控制语句(小白友好篇,手把手教你学会!)
     一、JavaScript概述JavaScript是一种高级编程语言,常用于网页开发和服务器端应用程序。它是一种动态类型语言,可以在浏览器中直接解释执行,而不需要编译。脚本(Script)是一种与计算机程序相关的指令集或代码块,用于执行特定的任务或操作。脚本通常用于自动化重复性的任务或进行特......
  • 堪称2024最强Java八股文面试题汇总
    1.Java的基本数据类型有哪些?答:Java的基本数据类型包括:整型:byte, short, int, long浮点型:float, double字符型:char布尔型:boolean2.Java中的变量作用域有哪些?答:Java中的变量作用域主要有:类变量(静态变量):作用域为整个类,可以在类的任何地方访问。实例变量:作用域为类的非......
  • 免费送源码:Java+ssm+Springboot Springboot小型仪器公司生产管理系统 计算机毕业设计
    摘要本论文主要论述了如何使用java语言开发一个Springboot小型仪器公司生产管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述小型仪器公司生产管理系统的当前背景以及系统开发的目的,后续章节将严格按......
  • 免费送源码:Java+ssm+MySQL+Ajax ssm第二课堂管理系统 计算机毕业设计原创定制
    摘要随着互联网的高速发展,教育进入了信息化时代,促使了多种混合式教学模式的出现。第二课堂管理系统是这一时期新型混合式教学模式的代表,它的出现改变了传统教学模式,将知识传递置于课前,将学习知识的主动性交给学生,促使学生的素质全面发展。第二课堂管理系统以“以学生为......
  • java+vue计算机毕设二手交易平台的设计实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和电子商务的日益普及,人们的消费观念逐渐转变,对于闲置物品的再利用需求日益增长。二手交易平台作为一种新兴的电子商务模式,......
  • 基于Java+SpringBoot+Vue+HTML5人事管理系统(源码+LW+调试文档+讲解等)/人力资源管理/
    博主介绍......
  • 每日OJ题_牛客_AB20走迷宫_BFS_C++_Java
    目录牛客_AB20走迷宫_BFS题目解析C++代码Java代码牛客_AB20走迷宫_BFS走迷宫_牛客题霸_牛客网(nowcoder.com)描述:        给定一个n×m的网格,在网格中每次在不超过边界的情况下可以选择向上、向下、向左、向右移动一格。网格中的一些格子上放置有障碍物,放有......