JavaSE——认识Java

Java语言介绍

Java是一种计算机语言

  • 语言
    人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换
  • 计算机语言
    人与计算机之间进行信息交流沟通是一种特殊语言,计算机语言中也有字符,符号等。
    常见的计算机语言如C,C++,C#,Java。
  • 计算机结构
    硬件系统+软件系统→计算机系统,用Java编写软件程序,程序是需要运行在硬件和计算机系统上,所以我们需要学习编程语言来编程序。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java更重要的是有强大的类库方便编程者使用,Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java可以做什么?

  • 开发端游、手游
  • 商城应用
  • 手机应用
  • 桌面应用
  • 大数据开发
  • Web开发
  • 客户端开发
  • 服务器开发

Java语言的特点

  • Java 语言是简单的
    Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。

  • Java 语言是面向对象的
    Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

  • Java语言是分布式的
    Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。

  • Java 语言是健壮的
    Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。

  • Java语言是安全的
    Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。

  • Java 语言是体系结构中立的
    Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

  • Java 语言是可移植的
    这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。

  • Java 语言是解释型的
    如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

  • Java 是高性能的
    与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。

  • Java 语言是多线程的
    在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。

  • Java 语言是动态的
    Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

Java分为三个体系

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。

Java历史

Java的历史是非常有意思的。1990年底,Sun Microsystems在工作站计算机市场上领先世界,并继续保持健康发展。Sun想把本公司的创新和专业知识应用到即将到来的消费电子市场领域,于是该公司邀请了一些顶级工程师,组建了一个Green Team团队(核心成员有: James Gosling, Mike Sheridan, Patrick Naughton和Bill Joy)来研究这个项目,这个项目主要做数字设备(例如:交互式电视、机顶盒等)。在1992年,Green Team团队研发了一个交互式手持式家庭娱乐设备,首次展示了其独立于处理器的新编程语言的潜力。由此可见这门语言的先进性,Java的先进性体现在它的设计原则:

  • 简单、面向对象、熟悉
  • 健壮的、安全的
  • 中立结构、可便携的
  • 高性能的
  • 可解释执行的、多线程的、动态的

Java的目标是,让应用程序开发者,“编写一次,到处运行“,这意味着,它是一门跨平台的语言,James Gosling被誉为”Java 之父“。
由此可见,Java如些先进,它的发展自然不言而喻。下面,我们看看Java1-8版本的发展历程:

1991

1991年1月(Green Project)
一个名为“Green Project”的项目启动。该项旨在为家用电器提供支持,使这些电器智能化并且能够彼此交互。而且这些家电可以由远程客户端控制。Bill Joy、James Gosling、Mike Sheradin和Patrick Naughton是该项目的核心成员。

1991年2月(橡树(Oak))
James Gosling是该计划的软件负责人和架构师。他最初的目标是为“绿色计划”找到一个适合的语言来运行。他选择了C++,并对有需要的地方进行了扩展。但是这些功能不能满足计划的需要,因此建立一门新的语言成为当务之急。他开始夜以继日地忙于新语言的开发,并将其命名为“Oak”,因为他办公室窗外有一棵橡树。

1991年4月(硬件原型)
SPARC工作站10的架构师 Ed Fran k加入到绿色计划中,并领导硬件开发工作。该计划的目的是开发一个硬件原型,展示“绿色计划”的功能。该计划命名为star-seven(*7)。*7计划的成员有Craig Forrest、Al Frazier、Ed Frank、James Gosling、Patrick Naughton、Joe Parlang、JonPayn、 MikeSheridan和Chris Warth。

1991年6月(解释器)
James Gosling开发了Oak的解释器。

1992

1992年3月(Java命名)
由于Oak已被用作另一种已存在的编程语言名称,因此必须选一个新的名字——它就是Java,灵感来源于咖啡。

1992年9月(Star-Seven原型)
Star-seven(7)带GUI的工作原型完成了,并向大家展示了其功能。与此同时绿计划也建立了一套新的语言、一个操作系统、一个硬件平台和一套接口。下面是如7原型的PDA样机,并由James Gosling亲自演示它。我推荐你完整观看整个视频,感受这来自1991-1992年的神奇。

1992年11月(FirstPerson)
Green计划被转化成了“FirstPerson有限公司”,并作为一个独立实体合并到Sun的子公司。

1993

1993年2月(电视机顶盒)
FirstPerson试图从时代华纳获得一个电视机顶盒交互系统的一揽子订单。在那时,由于绿色计划不是很成功,随即失去了时代华纳的订单。于是开发的重心从家庭消费电子产品转到了电视盒机顶盒的相关平台上。

1993年9月(应用开发平台)
Arthur Van Hoff加入了开发组,他的工作是交互平台上的应用开发。

1994

1994年6月(Liveoak计划)
实际上电视交互市场并没有给FirstPerson公司带来收益,最终它倒闭了。员工都合并到Sun公司。Liveoak计划启动了,它的目标是使用Oak语言设计出一个操作系统。

1994年7月(网络浏览器时代)
Patrick Naughton设计了一个Web浏览器,该浏览器内部使用Java。Liveoak计划进行了调整,使得Oak语言支持互联网。

1994年9月(HotJava)
Naughton和Jonatha Payne开始从事名为HotJava的以Java语言为基础的网页浏览器项目,该项目获得了管理层的广泛认可。

1994年10月(Java编译器)
由Van Hoff编写的Java编译器用于Java语言,之前的编译器由James Gosling使用C语言编写。

1995

1995年5月(正式发布JDK Alpha and Beta)
在SunWorld大会,Sun公司正式介绍了Java和HotJava。
1995年5月23日
Sun公司发布了Java 1.0(Java Development Kit (Jave开发工具包) , JDK1.0)

1995年6月(Netscape支持)
一次重大突破——Netscape在它的浏览器中支持Java。

1995年9月(HotJava)
由Sun组织的第一次Java开发者大会在纽约召开。

1995年10月(Oracle支持)
Oracle在其将发布的WWW网页系统中包含了一个兼容的Java浏览器。

1995年12月(Microsoft支持)
更广泛行业接受的信号,Microsoft在其IE浏览器中支持Java。

1996

1996年1月(1.0版本发布)
JDK1.0版本发布,这个版本为JDK1.0.2

1997

1997年2月(1.1版本发布)
JDK1.1版本发布。主要特点是:

  • AWT 事件模型
  • 内部类
  • JavaBeans
  • JDBC
  • RMI

仅仅支持内省形式的反射,具体在java.beans包中实现

1998

1998年12月(1.2版本发布)
JDK1.2版本发布,代号Playground。该版本通常被称为Java 2版本,是见证重大转变的最流行版本。主要特点是:

  • 增加了strictfp 关键字
  • Swing图形API
  • Sun的JVM首次配备了JIT编译器
  • Java插件技术:https://www.oracle.com/technetwork/java/index-jsp-141438.html
  • 集合框架
  • 支持windows系统的JIT编译器

2000

2000年5月(1.3版本发布)
JDK1.3版本发布,代号Kestrel。主要特点是:

  • Sun的JVM配备HotSpot JVM
  • 支持Java命名与目录接口
  • 支持Java平台调试体系
  • JavaSound
  • 支持代理类

2002

2002年2月(1.4版本发布)
J2SE1.4版本发布,代号Merlin。主要特点是:

  • 增加assert关键字
  • 支持正则表达式
  • 异常链
  • 支持IPv6
  • NIO
  • 日志API
  • Image I/O API
  • 集成XML解析器和JAXP
  • 集成JCE、JSSE、JAAS
  • 支持Java Web Start
  • Preferences API:java.util.prefs

2004

2004年9月(5.0版本发布)
J2SE5.0发布,代号Tiger。主要特点是:

  • 泛型
  • 注解
  • 自动装箱/拆箱
  • 枚举
  • 可变参数
  • 增强for each循环
  • 静态导入
  • java.util.concurrent中新的并发实用程序
  • Scanner类

2006

2006年11月(Java/Jdk (半)公开源码)
Java宣布将会公开源码,引起了广泛争议。由于设计的证书违背了通常的源码开放条款。或许我们可以称其为半公开。

2006年12月(6.0版本发布)
Java SE 6版本发布,代号Mustang。主要特点是:

  • 支持脚本语言
  • 性能上的提高
  • JAX-WS
  • JDBC 4.0
  • JavaCompiler API
  • JAXB 2.0 和 Streaming API for XML (StAX)
  • 插件化注解处理API
  • 新的GC算法

2010

2010年1月(Oracle收购Sun)
Oracle收购Sun公司及其产品。现在Java由Oracle控制。

2010年10月(苹果不再支持Java)
Steve Jobs声称,苹果将来不再支持Java。请阅读James Gosling“关于Steve Jobs声明的评论”。

2011

2011年7月(7.0版本发布)
Java SE 7.0版本发布,代号Dolphin。这个版本距上次发布有5年之久,并且只有这个版本花费了这么久。主要特点是:

  • JVM支持动态语言
  • 压缩的64位指针
  • switch语句支持String
  • try-with-resources
  • <>操作符
  • 简化可变参数方法声明
  • 二进制整数字面值
  • 允许下划线数字字面值literals.html
  • 异常处理优化
  • ForkJoin框架
  • NIO2.0
  • WatchService
  • Timsort算法用于Collections.sort和Arrays.sort
  • 图形功能API增强
  • 支持SCTP和SDP这两种新的网络协议

2014

2014年3月(8.0版本发布)
代号名字文化丢弃,主要特点是:

  • 在API上支持Lambda表达式
  • 函数接口和默认方法
  • Optional
  • 提供 Nashorn JavaScript引擎
  • Annotation新特性:类型注解和重复注解
  • 新的日期和时间API
  • 支持静态链接JNI库
  • 支持从jar文件启动JavaFX应用程序
  • 从GC中移除永久代

什么是字节码?采用字节码的大好处是什么?

  • 字节码
    Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文 件),它不面向任何特定的处理器,只面向虚拟机。

  • 采用字节码的好处
    Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的 问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效, 而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可 在多种不同的计算机上运行。

  • java中的编译器和解释器
    Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代 码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每 一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译 器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节 码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运 行,这就是上面提到的Java的特点的编译与解释并存的解释。

  • 编译到运行的流程
    Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中 解释器----->机器可执行的二进制机器码---->程序运行。

什么是Java程序的主类?应用程序和小程序的主类有何不同?

一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主 类是指包含main()方法的类。而在Java小程序中,这个主类是一个继承自系统 类JApplet或Applet的子类。应用程序的主类不一定要求是public类,但小程序 的主类要求必须是public类。主类是Java程序执行的入口点。

Java应用程序与小程序之间有那些差别?

简单说应用程序是从主线程启动(也就是main()方法)。applet小程序没有main 方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏 览器这点跟flash的小游戏类似。

Java和C++的区别

  • 都是面向对象的语言,都支持封装、继承和多态 Java不提供指针来直接访问内存,程序内存更加安全

  • Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是 接口可以多继承。

  • Java有自动内存管理机制,不需要程序员手动释放无用内存

Oracle JDK 和 OpenJDK 的对比

  1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一 次;
  2. OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是 OpenJDK的一个实现,并不是完全开源的;
  3. Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎 相同,但Oracle JDK有更多的类和一些错误修复。因此,如果您想开发企 业/商业软件,我建议您选择Oracle JDK,因为它经过了彻底的测试和稳 定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程 序崩溃的问题,但是,只需切换到Oracle JDK就可以解决问题;
  4. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的 性能;
  5. Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过 更新到最新版本获得支持来获取最新版本;
  6. Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值