Java 0x00 概述

1. 简介

Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码,以及一个提供诸如安全性,跨系统操作的可移植性以及自动垃圾收集等服务的执行环境。

2. Java 之父

  • 詹姆斯·高斯林 James · Gosling

  • 原 Sun 公司 → 后被 Oracle 公司收购

  • 写出 Java 语言的初期目标是编写一个纯净版的 C++

  • 底层 JVM 由 C++ 编写

3.1 JavaSE

  • Java 标准版(Java Standard Edition)
    • 各应用平台的基础,桌面开发和低端商务应用的解决方案

3.2 JavaEE

  • Java 企业版(Java Enterprise Edition)
    • 以企业为环境而开发应用程序的解决方案

3.3 JavaME

  • Java 微型版(Java Micro Edition)
    • 致力于消费产品和嵌入式设备的最佳方案

4. Java 可以做什么

  • 开发桌面应用程序(awt+swing+javaFX)
  • 开发面向Internet的web应用程序
  • 提供各行业的解决方案
  • 开发Android手机应用程序

5. 特性

5.1 简单性

  • 当年尽可能地按照 C++ 来设计的 Java,以便系统能够简单理解。比 C++ 简单,祛除了很多例如指针,头文件,操作符重载等,也叫 C++ 的纯净版本。

5.2 面向对象

  • 将重点放在数据(对象)和对象的接口上
  • 没有对象就 new 一个,再也不用怕没对象了!

5.3 分布式

  • Java 有一个丰富的例程库,用于处理像 HTTP 和 FTP 之类的 TCP/IP 协议。
  • Java 应用程序能够通过 URL 打开和访问网络上的对象,和访问本地文件一样快捷

5.4 健壮性

  • Java 的设计目标之一在于是的 Java 编写的程序有多方面的可靠性。
  • Java 非常强调进行早期的问题检测,后期动态的(运行时)检测,以及消除容易出错的情况。
  • Java 采用的指针模型可以消除重写内存和损坏数据得可能性。

5.5 安全性

  • Java 适用于网络/分布式环境
  • 使用 Java 可以构建防病毒,防篡改的系统
  • 普遍攻击模式:
    1. 运行时,堆栈溢出,这是蠕虫和病毒常用的手段。
    2. 破坏自己的进程空间之外的内存
    3. 未经授权读写文件

5.6 结构体系中立

  • 编译器生成一个体系结构中立的目标文件格式,文件已经经过编译
  • 只要有 Java 运行时系统,这些编译后的代码可以在其他处理器上运行
  • Java 编译器通过生成与特定计算机结构体系无关的字节码指令来实现这一特性
  • 这些字节码不仅可以在各种机器上解释执行,也可以动态地转换成本地机器代码
  • 解释性虚拟机指令比全速运行机器指令要慢很多
  • Java 虚拟机有一个选项,将执行最频繁的字节码序列转换成机器码,这一过程就是即时编译

5.7 可移植性

  • Java int 只有 32 位。数值类型有固定的字节数,消除了代码移植时可能会出现的头疼事。
  • 二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。
  • 字符串采用标准的 Unicode 格式存储。

5.8 解释型

  • Java 解释器可以在任何移植了解释机器上直接执行 Java 字节码。

5.9 高性能

  • 字节码可以(在运行时)动态地转换成对应运行这个应用特定的 CPU 的机器码。
  • 例如,即时编译器监控并发现一些代码被频繁地执行,随即转换成当前系统的机器码,优化代码可以提高速度。

5.10 多线程

  • 多线程可以带来更快的交互响应和实时行为。着手于更多的处理器,并让他们一直保持工作。而并非追求摩尔定律,即需求一个性能极致的处理器。
  • 第一个支持并发程序设计的主流语言。

5.11 动态性

  • 能够适应不断发展的环境。
  • 库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。

5.12 Jshell

  • 不用为写 main 方法而困扰,会让学习 Java 基础语言和类库变得轻松有趣。
  • 命令行 jshell 即可进入。版本需求 ≥ Java JDK9
  • 我个人觉得没啥用,因为我们开发还停留在 Java 8 (笑 :D

6. 运行机制

  • 调用配置好的系统环境路径下的 javac.exe 先编译生成 .class 文件, 后 java.exe 解释运行 .class 文件

7. 程序开发步骤

  • 编写 Java 源代码文件,编译源程序,编译器编译成 Java字节码文件,运行Java虚拟机(JVM)执行剩下的操作

8. 垃圾回收器(GC)

  • 在 Java 运行过程中自动启动,程序员无法干预。

9. JDK,JRE,JVM

JDK

  • Java 开发工具包(Java Development Kit)

JRE

  • Java 运行环境(Java Runtime Environment)

JVM

  • Java 虚拟机(Java Virtual Machine)
  • Java 虚拟机实际上只是一层接口,一层 Java 程序和操作系统通讯的接口
  • Java 文件编译生成 .class 文件,而 Java 虚拟机就是这些 .class 文件能够在上面运行的一个平台
    • 可以把 .class 文件看成一个软件,Java虚拟机就是这个软件可以运行的操作系统。

10. Java 历史

  • 课后作业~
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容