第一章:Java基本类型
Java简介
Java是SUN(全称:Stanford University Network,1982年成立)公司开发的一套编程语言,主要设计者是James Gosling.最初源于一个Green项目,项目原来的目的是为了给家用电子消费产品开发一个分布式代码系统,这样可以通过网络对家用电器进行控制。最开始工程师准备使用C++,但是C++过于复杂,安全性差,最后决定基于C++开发新语言Oak(Java前身),Oak是一种用于网络,精巧而安全的语言,但是在一个电视投标项目中被SGI打败。Oak当时差点无家可归,恰巧Mosaic和Netscape启用了Oak项目成员,Sun公司工程师用Java编制了HotJava浏览器,触发了Java进军Internet。
目前Java经历到今天有如下三个方向:
- JavaSE。包括构成Java语言核心的类,如数据库连接,接口定义,输入输出,网络编程等
- JavaME。包括JavaSE中的一部分类,用于消费产品的软件开发,如手机等。
- JavaEE。包含JavaSE中所有的类,并且还包含用于开发企业级应用的类。如:EJB,Servlet,JSP,XML和事务控制,也是目前Java主要的发展方向。
Java语言有如下特点:
- 1.简洁有效,省略了C++中所有难以理解的,容易混淆的特性。
- 2.可移植性,写出的程序无需修改可在Windows,Linux等平台运行。
- 3.面向对象。
- 4.解释型语言,相对于C/C++语言来说,用Java写出来的程序效率低,执行速度慢,但是它可以通过在不同的平台运行Java解释器,对Java代码进行解释,来实现“一次编写,到处运行”的目标,为了此目标牺牲效率还是值得的。
- 5.适合分布式计算,Java具有强大的,易于使用的联网能力,非常适合开发分布式程序,Java应用程序可以像访问本地文件系统那样通过URL访问远程对象。
- 6.具有较好的性能,由于是解释型语言,执行效率相对较慢,但是采用以下两种手段,使其仍然具备较好性能:
Java语言源程序写完后,先使用伪编译器进行伪编译,将其转换为中间码(也称字节码)再解释。
提供一种“准实时”(Just-in-Time,JIT)编译器,当需要更快的速度时,可以使用JIT编译器将字节码转换为机器码,然后将其缓冲下来,这样速度更快。 - 7.健壮,防患未然的特性
Java伪编译时会做许多的早期潜在问题的检查,并且运行时又做了一些相应的检查,可以说是一种最严格的“编译器”。 - 8.多线程处理能力
- 9.较高安全性
- 10.动态语言
- 11.中性结构
Java编译器生成的是一种中性的对象文件格式,也就是说,Java编译器通过伪编译后,将生成与任何计算机体系统无关的中性字节码。
Java程序运行机制和虚拟机
计算机高级语言类型主要有编译型和解释型,Java是两种的集合,Java处理代码过程如下:
从上图可以看出,Java源文件后缀名为.java,之后通过编译后使.java文件生成*.class文件,在计算机上执行*.class 文件,但是此时执行class文件的并不是物理计算机,而是Java自己设计的计算机-JVM,Java也是通过JVM进行可移植操作的。
在Java中所有的程序都是在JVM(Java Virtual Machine)上运行的,JVM是计算机通过软硬件模拟的计算机,Java虚拟机读取并处理经编译过的,与平台无关的class字节码文件。Java解释器负责将Java虚拟机的代码在特定的上的平台运行,JVM基本原理如图:
从上图可以发现,所有class 文件都是在JVM上运行的,即class 文件只需要认识JVM,JVM再适应各操作系统。
注:关于移植性的简单理解
这个过程就如以下情景:
有个中国富商,同时要和几个国家的人谈生意,他并不懂这些国家的语言,所以针对每个请个翻译,他说的话只对翻译说,不同的翻译将话翻译给各国人说,这样达到与各平台沟通的目的。
Java开发环境的搭建
开发环境请自行google,baidu,以下主要介绍classpath属性的作用:
classpath属性:通过classpath指定Java类的执行路径
注:classpath和JVM关系
classpath主要是类的运行路径,实际在读者执行Java命令时对于本地系统意味着启动一个JVM,JVM在运行时需要通过classpath加载所需的类,默认情况下classpath是指向当前目录
问题:能否通过classpath在不同文件夹中编译Java程序?
回答:classpath在编译时不起作用
classpath属性只在Java运行起作用,而Java编译时,如果命令行不是.java文件所在目录,则应输入完整路径。