java语言的诞生
java诞生于1995年,由jemes Gosling和他的团队所研发,最初java并未找到一个精准的定位,同时也不知道自己的存在的理由,直到1998年12月,sun公司发布了java最终要JDK版本:jdk1.2同时伴随着JDK还有JSP/Servlet以及EJB,而且也将java分成了J2EE,J2SE,J2ME三个版本;
J2EE:Java 2 Platform Enterprise Edition 企业版,用于企业应用,支持分布式部署。
J2SE:Java 2 Platform Standard Edition 标准版,用于桌面应用,也是J2EE的基础。
J2ME:Java 2 Platform Micro Edition 移动版用于小型设备,是J2SE的一个子集。
不仅如此jdk1.2还把API分成三个部分:
核心API,可选API,特殊API(java诞生就说到这,有兴趣的可以去看看JDK1.2到java SE8的发展史)
高级语言
什么是高级语言,相信很多的初学者都很好奇,高级语言是相对于低级语言的;
低级语言分为:汇编语言和机器语言;汇编语言:是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言(百度百科),机器语言:(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据;
高级语言的分类是按照执行方式来分,分为:编译型和解释型;
因为计算并不能直接去理解高级语言,所以需要把高级语言编译为机器语言才可以执行程序,而编译与解释也只是编译的时间不同,一个是程序执行前需要去编译,另一个是执行时才去编译。(后期会针对编译型语言和解释型语言写一篇)
JVM与java的运行机制
java语言比较特殊,Java语言编写的程序需要经过编译步骤,但是编译的步骤并不会产生特定平台的机器码,而是另一种与平台无关的字节码也就是.class文件,这种字节码也并不是可执行性的,它必须由java解释器来解释执行,所以可以说java不是纯粹的编译型语言也不是纯粹的解释型语言。
java语言中负责解释执行字节码的文件就是java虚拟机,即为JVM(java virtual Machine)。JVM是可运行Java字节码文件的虚拟计算机,所有平台上的JVM向编译器提供相同的编程接口,而编辑器只需要面向虚拟机即可。即:由程序人员编写代码,编辑器只用编辑为虚拟机可以理解的代码,然后虚拟机再来解释执行,在这个过程中,虚拟机会把代码转换为特定系统的机器码执行,从而来提高效率(我们都知道java跨的平台最多,这也是它的特点)。
同时JVM也是一个抽象的计算机,和我们所见的物理机一样,它具有指令集并使用不同的储存区域,它负责执行指令,还要管理数据,内存和寄存器。
Oracle公司制定的java虚拟机规范在技术上规定了JVM的统一标准,细节如下:
指令集
寄存器
类文件的格式
栈
垃圾回收堆
存储区
ps:JVM先说这么多,后期会写一期深入JVM的
Java的组织形式与源文件的命名规范
java程序是一种纯粹的面向对象的语言的程序设计语言,因此java程序必须以类(class)的形式存在,类(class)是java程序的最小单位。java程序不允许可执行性语句,方法等成分独立存在,所有程序必须在类中定义;
这是最最简单的一个java程序,这个程序定义了一个Test类,这个类中没有任何的类成分,是一个空类,但是这个编写规范是绝对正确的,它用javac命令是能通过编译的,但是java命令它则会报错,因为java解释器规定,如需要某个类能被解释器直接解释执行,则这个类必须包含main方法。
java源文件的命名不是随意的,java文件的命名必须满足如下规则:
java程序源文件的后缀必须是java(即为:xxx.java),不能是其他的后缀(有些同学可能会说我能不能写个.class文件呢,emm..针对这个问题,我....),通常情况下,java程序源文件的主文件名必须与该public类的类名相同(由于java程序源文件的名必须与public修饰的类名相同,所以一个类中只能有一个由public修饰的类)。
简单说垃圾回收机制GC(Garbage Collection)
传统的C/C++等编程语言需要负责回收已经分配的内存。这是显式垃圾回收,比较困难,因为程序员并不是总是知道内存应该在何时释放。所以显式垃圾回收有两个缺点:
1.程序忘记及时回收无用内存,从而导致内存泄露,降低了系统的性能。
2。程序错误的会后程序核心类库的内存,从而导致系统崩溃。
java的语言是不需要直接控制内存回收(这对于C/C++程序员的福音,简直良心到掉眼泪),而且实际上除了释放掉没用的对象 外,垃圾回收也可以清楚内存的记录碎片。垃圾回收不仅能自动释放内存空间,还可以减轻编程的负担,这使java虚拟机具有两个显著的优点:
1.垃圾回收机制能很好的提高编程的效率,在没有垃圾回收机制时,可能要花很多时间去解决一个难懂的存储器问题。
2.垃圾回收机制保护程序的完整性,垃圾回收也是java的安全性策略的一个重要部分。
但是GC也不是都是好,它的缺点就是:它的开销影响程序性能。(但是伴随这jdk的版本提高,垃圾回收的算法也不断的在提高)
ps:其实还想说下GC的几个特点,以及GC的算法,这个等JVM专题的时候会好好拿出来说的,现在主讲java的基础 - -!
数据类型与注释
其实讲这个之前要说下java的面对对象的思想的,这个放到高级里去把。
注释:
java中的注释分三类:
单行注释
多行注释
文档注释
在编写java源代码时添加了合适的文档注释, 然后通过JDK提供javadoc工具可以直接将源码里的文档注释提取成一份系统的API文档。
所有的注释在开发的过程中是非常重要的,非常重要的,非常重要的。
下期就开始讲 java 标示符与关键字,数据类型了。
J2EE是一系列技术标准所组成的平台,包括:
-
Applet - Java Applet
-
EJB - 企业级JavaBean(Enterprise Java Beans)
-
JAAS - Java Authentication and Authorization Service
-
JACC - J2EE Authorization Contract for Containers
-
JAF - Java Beans Activation Framework
-
JAX-RPC - Java API for XML-Based Remote Procedure Calls
-
JAX-WS - Java API for XML Web Services
-
JAXM
-
JAXP - Java XML解析API(Java API for XML Processing)
-
JAXR - Java API for XML Registries
-
JCA - J2EE连接器架构(J2EE Connector Architecture)
-
JDBC - Java数据库联接(Java Database Connectivity)
-
JMS - Java消息服务(Java Message Service)
-
JMX - Java Management Extension
-
JNDI - Java名字与目录接口(Java Naming and Directory Interface)
-
JSF - Java Server Faces
-
JSP - Java服务器页面(Java Server Pages)
-
JSTL - Java服务器页面标准标签库(Java Server Pages Standard Tag Library)
-
JTA - Java事务API(Java Transaction API)
-
JavaMail
-
Servlet - Java Servlet API
-
StAX - Streaming APIs for XML Parsers
-
WS - Web Services