JAVA的起源
Java来自于Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发的一个分布式代码系统,该系统可以把e-mail发给电冰箱、电视机等家用电器,对它们进行控制和它们进行信息交流。开始他们准备采用C++实现这个系统,但C++太复杂,安全性太差。最后他们基于C++开发了一种新语言Oak(JAVA的前身)。Oak是一种用于网络中精巧而且安全的语言,Sun公司曾以此投标了一个交互式电视项目,结果被SGI打败了,于是Oak就被束之高阁。1993年7月,伊利诺斯大学的NCSA推出了一个在Internet上广为流行的WWW浏览器Moasic 1.0版。为了增强WWW的交互。还需要通过一种机制来使得它具有动态性。受Moasic和Netscape的启发,Oak项目组成员用Java编制了Hotjava浏览器,得到Sun公司首席执行官Scott McNealy的支持,于此揭开了java进军Internet的序幕。
JAVA的发展历程
- 1990年,Sun公司James Gosling领导的小组设计了一种平台独立的语言Oak,主要用于为各种家电器编写程序。
- 1994年,由于Sun公司创始人之一Bill Joy的介入,Oak被命名为java。(关于java名字是有一个故事的,感兴趣可以去查查看故事内容)
- 1995年5月23日,Sun公司在SunWorld ’ 95会议上正式发布Java和HotJava。
- 1996年1月,Sun公司宣布成立新的业务部门——JavaSoft部,用以开发、销售并支持Java技术的产品,由Alan Baratz任总裁,公司同时推出Java开发工具包JDK(Java Development Kit)1.0,为开发人员提供用来编制Java应用软件所需的工具。
- 1996年2月,Sun公司发布了Java芯片系列,包括PicoJava、MicriJava和UItraJava,并推出Java数据库连接——JDBC。
- 1996年3月,Sun公司推出Java WorkShop。
- 2010年,Sun公司被Oracle公司收购。
工业界一直认为:Java的出现是20世纪80年代以来计算机界的一件大事。Bill Gates说:Java是长期以来最卓越的程序设计语言。
JAVA的特点
- 简单性
Java的设计目的是让专业程序员觉得既易学由好用。如果你已经学习过C++了的话,那学习Java将不费吹灰之力,Java对于C语言中出现的许多容易混淆概念的东西要么弃置不用,要么以一种更清楚、更易理解的方式出现。 - 面向对象性
尽管Java是在C++的基础上开发出来的,当Java并没被设计成兼容其他语言源代码的程序语言。Java语言可以更直接、更易用、更实际地接近对象。 - 分布式
Java是为Internet的分布式环境而设计的,因此它可以处理TCP/IP协议。 - 安全
Java在网络应用程序为用户的计算提供了一道防火墙(firewall),消除了用户的安全顾虑。Java实现这中保护功能的方法是通过将Java程序限制在Java运行环境中,不允许它访问计算机的其他部分。 - 多线程
Java设计的目的之一就是满足人们创建交互式网上程序的需要,为此,Java支持多线程编程,用Java编写的应用程序可以同时执行多个任务。Java运行时,系统在多线程同步方面具有成熟的解决方案,使得用户能够创建出运行平稳的交互式西系统。Java多线程机制非常好用,因此用户只需关注程序细节,而不用担心后台的多任务系统。 - 动态
Java程序带有多种运行的类型信息,用于在运行是校验和解决对象访问问题。 - 解释型
Java是一种解释型语言,通过把程序编为Java字节码这样一个中间过程,产生跨平台运行的程序,字节码可以在提供Java虚拟机(JVM)的任何一种系统中被解释执行。 - 高性能
Java可以在性能极低的CPU上顺利运行。Java字节码经过仔细设计,因而使用JIT编译技术能很容易地将字节码直接转换成高性能的本机代码,因而”高效且跨品台“对于Java来说不再是矛盾。 - 健壮
Java通过替用户管理内存分配和释放,可以从根本上消除传统编程环境下内存管理困难和乏味的任务。 - 结构中立和可移植性
Java设计者考虑的主要问题是程序代码的持久性和可移植性。程序员面临的一个主要问题是,不能保证今天编写的程序明天仍然能在同一台机器上顺利运行。操作系统升级、处理器升级以及核心系统资源的变化,都可能导致程序无法继续运行。
JAVA的运行原理
Java源程序经过编译器(javac.exe)编译后,会产生字节码文件(扩展名.class),然后通过解释器(java.exe)让字节码文件在JVM上解释运行。由此可见,Java程序是由JVM负责解释运行的,而非操作系统。这样就实现了跨平台运行程序,也就是说针对不同的操作系统,可以编写相同的程序,只需要安装不同版本的JVM即可。