Java语法基础-1
Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。
2020年是Java诞生的第25个年头。Oracle表示目前java仍然流行编程语言,广泛使用在企业中。目前全世界有超过69%的专职开发人员使用Java,全世界有510亿台活动Java虚拟机JVM在部署中,目前Java主要被用于数据分析、数据管理、大数据、DevOps、移动、持续开发工具和聊天机器人等服务
1、什么是程序
程序=算法+数据结构
为什么需要编程语言
用户:有亟待解决的问题–问题空间,使用自然语言进行描述
计算机:能够解决问题–解空间。计算机能够理解的语言和人类的自然语言相去甚远。要使用计算解决问题则需要采用某种方式将问题空间的内容映射到计算解空间中去,这里能够采用的方法无非是人迁就机器(机器语言–>芯片级后巷的微码语言–>汇编语言)或者机器迁就人(高级语言)。可以将解空间能够提供的能力抽象出来使得更接近人类的语言–这就是计算机编程语言,所谓编程无非是使用这种语言描述问题,并按照逻辑生成一个求解过程。使用高级语言所编写的程序需要通过编译器或者解释器将其转换为机器代码才能真正的执行。
2、Java概述
一种编程语言、一种开发环境、一种应用环境、一种部署环境Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性(以牺牲执行效率为代价换取了高安全性),广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群
Java完全面向对象的编程语言,主要用于Internet应用程序
Java 既是一种解释执行的语言(先编译后解释执行),也是一种编译执行的语言
Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮(鲁棒性)、安全与系统无关、可移植、高性能、多线程和静态的语言(从JDK8开始引入了一些动态语言的特性)
Java平台是基于Java语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言
首先将源代码编译成二进制字节码(bytecode不是机器语言),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了【一次编译、到处执行】的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的性能
Java是一个开发环境,Java技术包含一系列的工具:编译器,解释器,文档生成工具,打包工具等。另外由Java 2 SDK提供的JRE还包括了一个完整的Java集合,如基本语言类,GUI控件类等
Java是一个运行环境,它可以从SUN公司提供的Java 2 SDK中来搭建运行环境,免费
3、Java的主要技术分支
JavaSE:Java标准版,适合于开发桌面系统和低端商务应用系统,即用于桌面应用或者局域网应用开发
前身J2SE,2005年之后更名
Java 语言核心类:数据库连接,接口定义,输入/输出和网络编程
JavaEE:Java企业版,为企业提供电子商务构架及Web服务的解决方案,即主要用于企业级电子商务应用开发,简单的来说就是类似网站类型的应用
前身J2EE,2005年之后更名,2017年Oracle决定把JavaEE移交给开源组织Eclipse基金会,但是不希望JavaEE继续使用Java这个名字,尽管Eclipse做了争取,但是看来并没有什么用处。最终2018年正式更名为JakartaEE。
包含JAVA SE 中所有类,并且还包含用于开发区企业级应用的类,如EJB, Servelet, JSP. XML…等13项核心技术。JavaEE目前已成为开发电子商务应用的事实标准。企业级的概念:跨地域性、数据来源复杂性
JavaME:Java微型版,是移动商务最佳的应用典范,即用于受限环境的开发。
前身J2ME,2005年之后更名
包含JAVA SE中部分类,用于消费类电子产品的软件开发,如呼机、智能卡、手机、PDA 和机顶盒已经被Android所替代
Java 2:是Java的一个版本,一般指Java1.2及以后的Java版本
4、Java应用场景
Java编程语言是一种广泛应用于互联网应用的高级计算机语言,主要应用于网络编程和互联网电子商务应用,特别适合于Internet应用程序开发。
5、Java相关的概念
JDK:java开发工具箱,提供了java程序的开发工具和运行环境
JRE:Java运行时环境,提供了java的运行环境支持
JVM:Java虚拟机,JVM创造一个内部运行时系统runtime system来执行Java代码,包括:加载.class文件、管理内存、执行垃圾收集。
Java程序并不是在本机操作系统上直接运行,而是通过Java虚拟机向本机操作系统进行解释来运行。这就是说,任何安装有Java虚拟机的计算机系统都可以运行Java程序,而不论最初开发应用程序的是何种计算机系统
java虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类
JVM、JRE和JDK的区别
JVM(Java Virtual Machine):java虚拟机负责解释执行字节码文件,是可以运行Java字节码文件的虚拟计算机,是在真实机器中用软件模拟实现的一种想象机器。JVM可以保证java的跨平台的特性,虚拟机将java字节码程序翻译成机器语言。然后有计算机执行。java语言是跨平台,jvm不是跨平台的。
JRE(Java Runtime Environment):java的运行环境,JRE 是由JVM 和 java platform 核心类以及相关支撑文件组成。
Java的开发平台JDK是开发人员用来构建Java应用程序的软件包,它包括:Java虚拟机JVM、Java编译器javac、Java归档jar实用程序、Java文档javadoc实用程序等
所谓的Java运行环境JRE是JDK的子集,包括JVM、运行时类库和执行Java字节码所需要的Java应用程序启动器,但省略了Java编译器等开发工具。如果只需要运行Java而不需要开发Java程序,则不需要完全安装JDK,只选择安装JRE即可
6、Java的三大核心机制
Java虚拟机(Java Virtual Machine)
虚拟机就是在真实机器中用软件模拟实现的一种虚拟机器。Java虚拟机代码被存储在 .class文件中;每个文件都包含最多一个public类。
Java虚拟机可以理解成一个以字节码为机器指令的CPU。对于不同的运行平台,有不同的虚拟机。Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
2.垃圾收集机制Garbage Collection
Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器
不再使用内存空间回收——垃圾回收
在C/C++等语言中,由程序员负责回收无用内存。Java语言消除了程序员回收无用内存空间的责任,它提供了一种系统级线程跟踪存储空间的分配情况,并在JVM的空闲时检查并释放哪些可被释放的存储空间。垃圾收集在Java程序原型过程中自动运行,程序员无法精确控制和干预
3.代码安全性检测Code Security
在运行时,执行机器只是将.class类文件通过交互后使用,一般情况下是看不到它的源代码.Java,如果想要看到.Java源程序,就要通过专用反编译工具,才能够看到。这就体现了Java在运行环境中相对其它语言来说,加强了代码的安全性
安全沙箱
7、安装Java开发环境
官方博文说支持Java15的工具,就三款JetBrains IDEA、Apache NetBeans和Eclipse Marketplace。其中运行JDK15需要IDEA 2020.2才能支持。(JDK14要求IDEA 2020.1)
官方网站https://www.oracle.com/java/
7.1、Windows下的安装从官方网站http://oracle.com下载安装包或者使用我提供的安装包,目前最新版本为15,但是为了考虑所使用的软件问题,建议安装jdk1.8,而从编程学习的角度上说,JDK9+引入的模块管理功能在实际应用中并不是要求强制使用。https://www.oracle.com/technetwork/java/javase/downloads/index.html。另外JDK15的下载路径为https://www.oracle.com/java/technologies/javase-jdk15-downloads.html
提示:在具体的生产环境中一般不安装JDK(java开发工具箱),而是安装JRE(Java运行时环境),在开发环境中可以不安装公共JRE,因为JDK中必然自动安转一个JRE。
备注:本篇文章转载自蓝鸥高级讲师闫峻