Java基础知识总结之基本概念

本文主要对Java的一些基本概念进行简单总结。

一、什么是Java

Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

二、Java语言平台版本

  • Java SE(J2SE,Java 2 Platform Standard Edition,标准版):
    Java SE以前称为 J2SE。用于开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。Java SE包含了支持 Java Web服务开发的类,并为Java EE和Java ME提供基础。

  • Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版):
    Java EE以前称为 J2EE。是企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE是在Java SE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web2.0应用程序。JavaEE已被更名为JakartaEE。

  • Java ME(J2ME,Java 2 Platform Micro Edition,微型版):
    Java ME以前称为J2ME。Java ME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于Java ME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

总结:

  • Java SE:图形界面开发,一般用来开发电脑客户端的应用。这个是Java EE和Java ME的基础。
  • Java EE:企业级开发 ,一般用来开发服务器端的应用。
  • Java ME:嵌入式开发,一般用来开发嵌入式应用。

三、Java语言的特点

  • 简单性
  • 面向对象(封装,继承,多态)
  • 分布式
  • 健壮性
  • 安全性
  • 体系结构中立
  • 可移植性
  • 解释性
  • 高性能
  • 多线程
  • 动态性

四、JVM、JDK和JRE

  • JVM:Java Virtual Machine,Java虚拟机,是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果,因此Java语言可以实现跨平台。
  • JDK:Java Development Kit,Java开发工具包,提供了Java的开发及运行环境。JDK是Java开发的核心,集成了JRE以及一些其它的工具,比如编译Java源码的编译器javac等。它能够创建和编译程序。
  • JRE:Java Runtime Environment,Java运行环境的简称,为Java的运行提供了所需的环境。主要包括了Java虚拟机和Java程序所需的核心类库等。但是,它不能用于创建新程序。

五、跨平台性及原理

跨平台性就是指java语言编写的应用程序,一次编译后,在不同的系统平台上都可以运行。原理就是Java程序是通过java虚拟机在系统平台上运行的,只要该操作系统安装相应的java虚拟机,该系统就可以运行java程序。

六、字节码及其好处

Java字节码是Java虚拟机执行的一种虚拟指令格式。可以简单理解为Java虚拟机可以理解的代码,它不面向任何特定的处理器,只面向虚拟机。使用字节码的好处在于在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

七、编译与解释并存

高级编程语言按照程序的执行方式分为编译型和解释型两种。编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码;解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行。而Java语言既具有编译型语言的特征,也具有解释型语言的特征,即编译与解释并存。这是因为Java源程序要先经过编译器编译生成字节码文件(.class),然后虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定平台上的机器码,然后在特定平台上运行。

八、Java程序的主类和小程序的主类的区别

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

一个".java”源文件中可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

九、Java应用程序与小程序的区别

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

十、Oracle JDK和OpenJDK的对比

  • Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次。
  • OpenJDK是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的。
  • Oracle JDK比OpenJDK更稳定。OpenJDK和Oracle JDK的代码几乎相同,但Oracle JDK有更多的类和一些错误修复。
  • 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能。
  • Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本。
  • Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。

十一、Java和C++的对比

  • 都是面向对象的语言,都支持封装、继承和多态。但Java是纯粹的面向对象语言,所有的对象都继承自java.lang.Object,C++为了兼容C既支持面向对象也支持面向过程。
  • Java通过虚拟机从而实现跨平台特性,C++依赖于特定的平台。
  • Java没有指针,C++有指针。
  • Java支持自动垃圾回收,C++需要手动回收。
  • Java的类只支持单继承,C++支持多继承,虽然 Java的类不可以多继承,但是接口可以多继承。
  • Java不支持操作符重载,虽然可以对两个String对象执行加法运算,但这是语言内置支持的操作,不属于操作符重载,而C++支持。
  • Java的goto是保留字,但是不可用,C++可以使用goto。

你可能感兴趣的:(Java,java,编程语言,后端)