0%

走进Java

走进java

概述

优点

  • 用户量大

  • 一次编写,到处运行

    • 程序员只需要用JDK提供的接口,不必关心硬件如何如何
  • 安全的内存管理机制

    • 看过C++那丑陋的指针和引用就能明白这点
  • 热点代码检测和运行时编译及优化

    • 越跑越快
  • 各种库

java技术体系

组成

  • 根据功能划分

    • java语言

    • 各种硬件平台上的JVM

    • Class文件

    • 第三方java类库

      • 商业机构
      • 开源社区
    • java API 类库

  • 根据服务领域划分

    • Java Card

      • java程序运行在小内存设备的平台
    • Java ME

      • 含义

        • micro edition
      • 特点

        • 对java API有所精简
        • 加入了对移动终端的支持
      • 曾用名

        • J2ME
    • Java SE

      • 含义

        • standard edition
      • 特点

        • 支持面向桌面级应用的java平台
        • 完整的java核心API
      • 曾用名

        • J2SE
    • Java EE

      • 含义

        • enterprise edition
      • 特点

        • 支持使用多层架构的企业应用
        • 对Java SE API做了扩充
      • 曾用名

        • J2EE

JDK VS JRE

  • JDK

    • Java Development Kit

      • 开发java程序
  • JRE

    • Java Runtime Environment

      • 运行java程序

java发展史

James Gosling

Oak

JDK 1.0

  • Write Once,Run anywhere

  • JVM

  • Applet

    • 可以包含在HTML里的一个小程序
  • AWT

    • 类似swing、javafx这种吧,idk

JDK 1.1

  • JDBC

    • 程序员用java访问数据库只需要关心JDBC提供的接口,实现类由具体的数据库驱动提供
  • JavaBeans

  • RMI

    • Remote Method Invocation
  • Inner class

    • 没用过,感觉不常用,好奇怪
  • Reflection

JDK 1.1发布了9个版本

JDK 1.2

  • java技术体系被拆分

    • J2SE

      • Java 2 Platform,Standard Edition

        • 面向桌面级应用
    • J2EE

      • Java 2 Platform,Enterprise Edition

        • 面向企业级开发
    • J2ME

      • Java 2 Platform,Micro Edition
  • strictfp关键字

  • Collections类

HotSpot虚拟机发布

  • 后来成了JDK的默认虚拟机

JDK 1.3

  • 一些闻所未闻看不懂的新特性

JDK 1.4

  • 走向成熟的版本

  • 正则表达式

  • 异常链

    • 你抛我,我抛他,形成永动
  • NIO

  • 日志类

  • XML解析器

.NET Framework发布

  • 强势竞争

JDK 1.5

  • 自动装箱

    • 把基本类型转换为包装类型
  • 泛型

  • 动态注解

  • 枚举

  • 可变长参数

  • foreach

  • 改进了JMM

    • Java Memory Model

JDK 1.6

  • 全新的命名方式

  • 对虚拟机内部做了很多改进

    • 锁与同步
    • 垃圾收集
    • 类加载

Sun被Oracle收购

展望Java的未来

模块化

混合语言

  • 催生了许多新语言
  • 许多老古董也有了jvm特供版

多核并行

  • Fork/Join

丰富语法

  • 比如函数式编程

64位虚拟机

  • 现在可能已经过渡完成了,毕竟我看的是9年前出版的书,那时候java8还没发布呢

自己编译JDK

获取JDK原码

  • OPENJDK之类的

构建编译环境

  • 说出来你可能不信,JDK使用C++编译器编译的(部分),所以要选个IDE的话,VS是不错的选择
  • 当然很多代码还是用java写的,所以还需要一个已经编译好的JDKhhh

OPEN JDK也不是100%开源的,有些依赖项是闭包的,得手动下载那些个依赖项才好JDK plug

开始编译

  • 细节一大堆

    • tlds