Java概述

1.Java的由来
(1)Oak语言
    1991年,美国Sun Microsystems公司的某个研究小组为了能够在消费电子产品上开发应用程序,积极寻找合适的编程语言。消费电子产品种类繁多,包括PDA、机顶盒、手机等等,即使是同一类消费电子产品所采用的处理芯片和操作系统也不相同,也存在着跨平台的问题。当时最流行的编程语言是C和C++语言,Sun公司的研究人员就考虑是否可以采用C++语言来编写消费电子产品的应用程序,但是研究表明,对于消费电子产品而言C++语言过于复杂和庞大,并不适用,安全性也并不令人满意。于是,Bill Joy先生领导的研究小组就着手设计和开发出一种语言,称之为Oak(橡树,据说是作者当时随意起的名字)”。该语言采用了许多C语言的语法,提高了安全性,并且是面向对象的语言。
(2)Java语言
    Oak语言在商业上并未获得成功。1995年,互联网在世界上开始流行,Sun公司发现Oak语言跨平台、面向对象、安全性高等特点非常符合互联网需要,于是进行改进以实现以下几个目标:
   ◇ 创建一种面向对象的程序设计语言;
   ◇ 提供一个解释执行的程序运行环境,实现跨平台;
   ◇ 吸收C和C++的语法优点,使程序员容易掌握;
   ◇ 去掉C和C++中指针和内存申请、释放等影响程序健壮性的部分;
   ◇ 实现多线程,使得程序能够同时执行多个任务;
   ◇ 提供动态下载程序代码的机制,适应网络计算的需要;
   ◇ 提供代码校验机制以保证安全性;
  最终,Sun公司给该语言取名为java语言。Java是印尼的一个小岛,因盛产咖啡而闻名,由于程序员一般都喜欢喝咖啡,因此命名为Java语言。
2.java的工作原理 

(1)虚拟机
      Java虚拟机是利用软件方法实现的抽象化的计算机,基于下层的操作系统和硬件平台,可以在上面执行Java的字节码程序。
      java程序的跨平台主要是指字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成为特定的机器码进行运行。java源程序需要通过编译器编译成为.class文件(字节码文件).
  但是,java虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类。目前在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上、在UNIX、Linux、windows和部分实时操作系统上都有java虚拟机的实现。(1)虚拟机
      Java虚拟机是利用软件方法实现的抽象化的计算机,基于下层的操作系统和硬件平台,可以在上面执行Java的字节码程序。
      java程序的跨平台主要是指字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成为特定的机器码进行运行。java源程序需要通过编译器编译成为.class文件(字节码文件).
  但是,java虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类。目前在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上、在UNIX、Linux、windows和部分实时操作系统上都有java虚拟机的实现。
(2)无用内存自动回收机制
  在程序的执行过程中,部分内存在使用过后就处于废弃状态,如果不及时进行无用内存的回收,就会导致内存泄漏,进而导致系统崩溃。在C++语言中是由程序员进行内存回收的,程序员需要在编写程序的时候把不再使用的对象内存释放掉;但是这种人为的管理内存释放的方法却往往由于程序员的疏忽而致使内存无法回收,同时也增加了程序员的工作量。而在java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。
(3)代码安全性检查机制
  安全和方便总是相对矛盾的。java编程语言的出现使得客户端机器可以方便的从网络上下载java程序到本机上运行,但是如何保证该java程序不携带病毒或者不怀有其它险恶目的呢?如果java语言不能保证执行的安全性,那么它就不可能存活到今天。虽然有时候少数程序员会抱怨说applet连文件系统也不能访问,但是正是各种安全措施的实行才确保了java语言的生存。
  字节码的执行需要经过三个步骤,首先由类装载器(class loader)负责把类文件(.class文件)加载到java虚拟机中,在此过程需要检验该类文件是否符合类文件规范;其次字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作,例如applet程序中写本机文件系统的操作;如果字节码校验器检验通过,由java解释器负责把该类文件解释成为机器码进行执行。java虚拟机采用的是"沙箱"运行模式,即把java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存,如果是applet程序,还不允许访问客户端机器的文件系统。
3.Java语言的特点
(1)简单、面向对象
  java的简单首先体现在精简的系统上,力图用最小的系统实现足够多的功能;对硬件的要求不高,在小型的计算机上便可以良好的运行。java采用了面向对象技术,所有的java程序和applet程序均是对象,去掉了运算符重载、多继承的复杂概念,而采用了单一继承、类强制转换、多线程、引用(非指针)等方式。无用内存自动回收机制也使得程序员不必费心管理内存,使程序设计更加简单,同时大大减少了出错的可能。
(2)鲁棒并且安全
  java语言在编译及运行程序时,都要进行严格的检查。作为一种强制类型语言,java在编译和连接时都进行大量的类型检查,防止不匹配问题的发生。如果引用一个非法类型、或执行一个非法类型操作,java将在解释时指出该错误。在java程序中不能采用地址计算的方法通过指针访问内存单元,大大减少了错误发生的可能性;而且java的数组并非用指针实现,这样就可以在检查中避免数组越界的发生。无用内存自动回收机制也增加了java的鲁棒性。
  作为网络语言,java必须提供足够的安全保障,并且要防止病毒的侵袭。java在运行应用程序时,严格检查其访问数据的权限,比如不允许网络上的应用程序修改本地的数据。下载到用户计算机中的字节代码在其被执行前要经过一个核实工具,一旦字节代码被核实,便由java解释器来执行,该解释器通过阻止对内存的直接访问来进一步提高java的安全性。同时java极高的鲁棒性也增强了java的安全性。
(3)结构中立并且可以移植
  网络上充满了各种不同类型的机器和操作系统,为使java程序能在网络的任何地方运行,java编译器编译生成了与体系结构无关的字节码结构文件格式。任何种类的计算机,只有在其处理器和操作系统上有java运行时环境,字节码文件就可以在该计算机上运行。
  体系结构的中立也使得java系统具有可移植性。java运行时系统可以移植到不同的处理器和操作系统上,java的编译器是由java语言实现的,解释器是由java语言和标准C语言实现的,因此可以较为方便的进行移植工作。
(4)高性能
  虽然java是解释执行的,但它仍然具有非常高的性能,在一些特定的CPU上,java字节码可以快速的转换成为机器码进行执行。而且随着java虚拟机的改进和"即时编译"(just in time)技术的出现使得java的执行速度有了更大的提高。
(5)解释执行、多线程并且是动态的
  为易于实现跨平台性,java设计成为解释执行,字节码本身包含了许多编译时生成的信息,使连接过程更加简单。而多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,互不干涉,不会由于某一任务处于等待状态而影响了其它任务的执行,这样就可以容易的实现网络上的实时交互操作。java在执行过程中,可以动态的加载各种类库,这一特点使之非常适合于网络运行,同时也非常有利于软件的开发,即使是更新类库也不必重新编译使用这一类库的应用程序。
4.Java编辑环境
JDK(Java Development Kits)是早期Java开发包名称,一直沿用至今。98年发表1.2版的时候,Sun公司使用了新名称Java2platform来称呼Java,译成中文就是Java平台,而JDK名称则被修改为J2SDK(Java2(platform) Software Developing Kit),并分为标准版(StandardEdition,又称为J2SE)、企业版(EnterpriseEdition,又称为J2EE)和微型版(MicroEdition,又称为J2ME)三个版本。它们各有自己的用途,不过最基本的开发包还是J2SE。具体如下:
 J2ME,是Sun公司为了把Java应用于移动通讯设备、嵌入式设备或消费性电器而推出的一项开发Java应用程序的环境。
 J2SE,J2ME和J2EE的基础,可以进行桌面应用开发。
 J2EE,是企业级应用平台,主要对电子商务等系统的开发。
(1)JDK等同于VC的SDK,利用它,Java程序员可以轻松的开发Java程序。JDK工具包具体包括如下内容:类库、编译器、调试器、JRE(运行时环境)。
 Javac是用来编译源代码的命令,并生成.Class字节码文件;
 Java是用来在JRE内解释运行.Class字节码;
 类库主要封装了应用程序接口和基本应用,包括IO、组件、事件等;
 Appletviewer允许在浏览器的环境之外运行Applet。
(2)应用程序的基本结构(所有的实现必须放在类中,main()是应用程序执行的入口)
import语句
class 主类名称
{
public static void main(String args[])
{
//方法体
}
}
(3)编辑工具,可以使用记事本、Editplus等编辑器工具进行源代码的编辑,然后可以在Dos环境或者配制编辑工具通过调用javac和java命令进行编译和执行。或者通过JBuilder IDE或其它的集成开发工具进行开发。
5.Java环境设置
(1)下载
下载jdk,以Jdk1.5版本为例,包括jdk和jre两个程序,下载地址为:
http://192.18.97.222/ECom/EComTicketServlet/BEGIN94CE2ED1CA2736C5960AB958E18DA80C/-2147483648/1236955419/1/681986/681818/1236955419/2ts+/westCoastFSEND/jdk-1.5.0_06-oth-JPR/jdk-1.5.0_06-oth-JPR:2/jdk-1_5_0_06-windows-i586-p.exe
sun公司网站上提供for windows、linux、solaris等各种平台的jdk下载,具体查看      http://java.sun.com/j2se/1.5.0/download.jsp
下载tomcat,主要用于Servlet和JSP的容器,以tomcat5.5版本为例,下载地址为:
http://apache.justdn.org/tomcat/tomcat-5/v5.5.14-beta/bin/apache-tomcat-5.5.14.zip,其中扩展名为tar.gz是for linux的,还有可以直接安装的,而zip是直接解压缩使用。
(2)安装
安装Jdk,运行jdk-1_5_0_06-windows-i586-p.exe,依照安装提示进行安装,我的安装路径为:C:/ Java;
安装tomcat,将apache-tomcat-5.5.14.zip解压到某一位置,我的路径为C:/Tomcat。
(3)设置环境变量
环境变量概念,环境变量包括系统变量和用户变量,其中系统变量对该计算机的所有用户都有效,而用户变量则只对当前用户有效。
设置Java环境变量,打开“我的电脑-属性-高级-环境变量”,增加如下系统变量:
一般只用设置JAVA_HOME和PATH即可。 
①JAVA_HOME=“C:/Java/jdk1.5.0_06”;JDK的安装目录,许多依赖JDK的开发环境都靠它来定位JDK;
②PATH=“%JAVA_HOME%/bin;”;当执行javac和java等命令时,能够通过path找到具体的可执行文件;
③CLASSPATH= ".;%JAVA_HOME%/lib";指定第三方或自定义类——即不是 Java 扩展或 Java平台一部分的类。一般情况下,JDK和其它JDK工具依次通过搜索平台库、库扩展和Classpath来查找类。多数应用程序的类库都会充分利用扩展机制。因此,只有想要加载某个类库(a)未位于当前目录或其分支包中 且 (b)未位于扩展机制所指定的位置时,才需设置classpath;JDK缺省类路径是当前目录。设置 CLASSPATH 变量或使用 -classpath 命令行开关将覆盖缺省值,因而如果想要在搜索路径中包括当前目录,则必须在Classpath新设置中包括“.;”,另外命令行cmd环境每次启动时读取Classpath环境变量的值,因此打开cmd命令行后的环境变量设置对cmd环境无效。
(4)设置Tomcat环境变量,打开“我的电脑-属性-高级-环境变量”,增加如下系统变量: 
一般只用设置CATALINA_HOME即可。
①CATALINA_HOME=“C:/Tomcat”;Tomcat的安装目录,许多依赖Tomcat的开发环境靠它来定位Tomcat; 
②CATALINA_BASE,CATALINA_BASE一般也指向catalina_home目录。其实,一份tomcat是支持多个不同的CATALINA_BASE目录的,可以启动多份instance,每个instance有一个自己的CATALINA_BASE。CATALINA_BASE目录的结构如下,+conf、+logs、+temp、+work、+shared、start.bat,为了避免冲突,不同的CATALINA_BASE中,在conf/server.xml中,需要修改<server>的port和<Connector protocol="AJP/1.3">的port,关闭http的connector。每个instance必须打开两个port,而且不能冲突。需要有个小文件来记录每个instance分配的port。在系统中设定CATALINA_HOME,然后每个instance这样启动:
setCATALINA_BASE=.
call%CATALINA_HOME%/bin/startup.bat
也就是说,服务器上的每个人可以自己独立调度自己的webapp,在一个独立的jvm中运行,重起也不会影响别人。
③为了要能做SERVLET开发还需要一个环境变量,也就是在CLASSPATH的环境变量的基础上增加%CATALINA_HOME%/common/lib/servlet-api.jar(请注意: 4.0的版本是servlet.jar,而5.0的版本是servlet-api.jar);
(5)测试Java环境
测试JDK
打开记事本,输入如下内容,并保存为"d:/helloworld.java"
   import java.io.*;
   class helloWorld
   {
      public static void main( String[] args )
      {
         System.out.println("HelloWorld!");
      }
   }
单击“开始-运行”,输入"cmd",进入command窗口,输入javac helloWorld.java回车,如果JDK配置正确,将正确编译。然后输入java helloWorld回车,将输出"HelloWorld!"。注意: javac命令不区分大小写,而java则严格区分大小写,如果java HelloWorld则错误;Java对待.java文件与.class文件是有区别的,对.java文件可以直接指定路径给它,而java命令所需的.class文件不能出现扩展名,也不能指定额外的路径给它。
测试tomcat
首先在开始—>运行中输入“%Catalina_home%/bin/startup.bat”启动Tomcat服务器,然后在浏览器输入http://localhost:8080,则显示Tomcat的大猫页面,则Tomcat配置成功。该页面有个 JSP Examples和Servlet Examples连接,可以测试一下JSP的运行。
6.Java API文档
(1)打开浏览器,输入http://java.sun.com/j2se/1.4.1/docs/api/index.html地址,并打开页面;
(2)可以看到Java所提供的类库文档,通过点击相关主题,可以浏览相应的网页内容。
7.Java命名规范
(1)包名:包名是全小写的名词,中间可以由点分隔开,例如:java.awt.event;
(2)类名:首字母大写,通常由多个单词合成一个类名,要求每个单词的首字母也要大写,例如class HelloWorldApp;
(3)接口名:命名规则与类名相同,例如interface Collection;
(4)方法名:往往由多个单词合成,第一个单词通常为动词,首字母小写,中间的每个单词的首字母都要大写,例如:balanceAccount, isButtonPressed;
(5)变量名:全小写,一般为名词,例如:length;
(6)常量名:基本数据类型的常量名为全大写,如果是由多个单词构成,可以用下划线隔开,例如:int YEAR, int WEEK_OF_MONTH;如果是对象类型的常量,则是大小写混合,由大写字母把单词隔开。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值