Java学习笔记之java简介以及环境的搭建(一)

来源:互联网 发布:mac版本飞秋 编辑:程序博客网 时间:2024/05/17 22:28

        Java 的语言是一种比较简单的语言,与常用的c++简洁很多,并且提高可靠性。J同时ava语言是一种特殊的高级语言,它既具有解释型语言的特4征,也具有编译型语言的特征。因为java程序先编译后解释的过程。

注释:在这里简单的说一下高级语音的运行机制。计算机高级语言根据执行方式分为两种一种为编译型一种是解释型。

    编译型语言是指使用专门的编译器,针对特定的平台(操作系统)将某种高级

源代码一次性“翻译”成可被该平台硬件执行的机器码(包括机器指令或操作数),并包装成该平台所能识别的可执行程序的格式。这个转换过程称为编译。编译生成的可执行程序可以脱离开发环境,在特定的环境下运行。

编译型的语言是一次性的编译成机器码,所以可以脱离开发环境独自运行,而且运行速率较快。但是由于编译型语言被编译成特定平台的机器码,所以在移植的时候,需要把源码复制到特定的平台,同时也用特定平台的编译器重新编译。

例如现有的CC++FORTRAN,Pascal等高级语言都是编译型语言。

解释型语言:是指使用专门的解释器对源程序逐行解释成特定平台的机器码并且立即执行的语音。解释型语言通常不会进行整体性的编译和连接处理,解释型语言相当于把编译型中的编译和解释过程混合到一起同时完成。

解释型语言的工作流程就是每次执行解释型语言就必须进行编译,这样的运行效率低。但是解释型语言的跨平台比较容易,只需提供特定平台的编译器就可以了。现在的RubyPython都是解释行语言。

JAVA程序的运行机制和JVM

Java的语言比较特殊。Java语言编写的程序需要经过编译步骤和执行。可是在编译步骤并不会生成指定的平台的机器码,而是与平台无关的字节码(也就是*.class文件)。但是这些字节码不会被执行,需要用Java解释器来执行。因此我们可以认为Java是解释型和编译型的语言。也可以理解为Java既不是纯粹的编译型语言也不是纯粹的解释型语言。Java的执行过程需要进行先编译,后解释的两个步骤。如图:

         Java语言中负责解释执行字节码文件的是Java虚拟机即JVMjava Virtual Machine.JVM是可以运行Java字节码的虚拟计算机。所有平台上的JVM向编译器提供了相同的编程接口,而 编程接口只面向虚拟机,生成虚拟机的能理解的代码,然后有虚拟机来解释执行。

        JVM是一种抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存贮区域,它负责执行指令,还要管理数据,内存和寄存器。(关于JVM的问题这里先不过多的解释了)。

Sun公司指定了Java虚拟机规范在技术上规定了JVM的标准,除去定义了JVM的如下细节 指令集 寄存器 类文件格式 栈,5垃圾回收机制 存储区

了解了Java语言的含义和运行机制,在这里来看一下Java语言的特性以及Java语言的版本。 

Java语言的特性主要体现在以下几个方面。

简单性

Java语言的简单明了,容易掌握,而且是纯面向对象的语言。Java的简单主要体现在以下几个方面 。

第一个方面是 语法规则与C++类似,从某种意义上讲Java是从CC++发展而来,掌握C++,那么也很容易掌握Java。(不知道C,或者C++的朋友,可以去百度或者google搜一下)。

第二个方面是Java语言对于C或者C++做了提高。Java使用接口来代替多重继承,并取消了指针。

第三方面是Java提供了丰富的类库和API文档以及第三方的开发包。另外基于Java的开源项目。

面向对象、

Java语言是一种纯面向对象的语言,Java提倡万物皆对象,Java语言最外部的数据类型是对象,所有的元素都要都过类和对象来实现。

分布性

分布性分为操作性和数据分布。操作分布是指多个不同的主机布置相关的操作。而数据分布是指将数据分别放在不同的主机上,这些主机是网络的不同的成员。Java通过url来访问网络对象。

可移植性

Java程序具有与体系结构无关的特性,从而使Java程序可是方便的移植到网络的不同的计算机中。同时Java的类库中也实现了针对不同平台的接口。

5解释性

运行Java程序需要解释器。任何移植了Java解析器的计算机或者其他设备都可以用Java字节码进行解析执行。

6安全性

Java中删除了C语言中的指针和内存释放等预防,有效的避免了非法的操作内存。Java程序代码需要进行校验,指针校验等很多的测试步骤才可以运行。所以未经Java允许的程序是不可能损坏系统的平台的。

健壮性

Java将程序在编译和运行的错误进行检查并且消除错误。类型检查能帮助用户在开发早期发现出现的错误。

多线程

多线程机制可以能够是应用程序在同一时间运行多个任务,而且相应的同步机制可以保证不同线程能够正常的共享数据。

高性能

Java编译后的字节码在编译器速度比其他应用程序快   

10 动态性。

       Java现在版本分为三个,分别为Java  SE JavaEE, Java ME

其中Java  SE主要应用于桌面应用程序的开发,同时也是Java的基础,它包含Java语言基础,jdbcJava连接数据库),操作,i/o(输入或输出),网络通信,多线程等技术

JavaEE Java2的企业版,主要用来开发企业级分布式的网络程序。如电子网站和ERP(企业资源规划)系统,其核心是EJB(企业Java组件模型)。

Java ME主要应用于嵌入式系统开发,如手机,掌上电脑等移动通信电子设备。

Java中的提供了官方帮助文档APIJava API是运行库的集合,它提供了一套访问主机系统资源的标准方法。API中提供了类库,常用的类的方法,GUI设计等。想学好Java语言,学会应用API是非常重要的。

在介绍了Java的相关历史之后,我们来看一下Java的开发都需要准备。在开发Java程序之前我们必须在电脑配置开发环境以及它的运行环境

     开发Java程序我们需要安装Java的开发包JDKJDk的全称是Java  SE  Development

Kit,即是Java的标准开发包,是sun公司中提供一套专门开发Java应用程序的开发包,它提供 了编译,运行Java程序所需各种工具和资源,包括Java的编译器,运行器,以及Java的类库。JDKJava的开发环境,在运行Java程序时必须提到另一个概念,Java的运行环境,Java的运行环境JREJRE的全称是Java Runtime Environment。在这里说一下JVMJRE的关系。JVMJ执行Java程序的虚拟机,但是在JRE中包含了JVMJVMJava程序的核心的虚拟机,但是在运行Java程序不仅仅需要JVM,还需要累加器,字节码校验器以及大量的Java的类库。所以JRE包含JVM,而且还包含Java程序的别的程序支持.

   

     JDK的下载和安装

JDK的下载可以登录http://www.oracle.com/technetwork/java/javase/downloads/index.页面去下载,下载JDK的最新版本。目前Jdk的版本最新的JDK7,博客中有些支持是有JDK7的特性。

在这里就在介绍了JDK的安装过程了,如果不知道怎么安装的,可以去google或者百度一下,可以找到很多安装例子和视频。这里主要来说明一下我们在JDK中安装的三个组件。

    Java的开发工具:这是Java的核心,包括了Java编译程序所必须的命令工具。

 演示程序和示例: 安装这个选项会向机器中安装Oracle所提供的大量的演示程序,示例,代码,这些代码是初学者的入门范例。

    源代码: 这个选项会安装JAVA的所有核心类库的源代码。

      安装完成后我们可以如图下的许多东西。

    

         这里介绍一下jdk目录下一下文件的含义。

  Bin目录 : 该目录下是Java常用的各种工具命令。常用的javajavac等命令就在这个目录下。

Demo目录:该目录提供了jdk中的演示代码,供初学者使用。

Jre目录 :安装了就是运行Java程序的必备的开发环境 。

Lib目录 :该路径存放的是jdk中实际执行的程序。

Sample 目录 : 该路径下存放的是JDK提供的一些简单的代码演示。

Src.zip 目录 :该路径下存放的就是JAVA所以核心类库的源代码。

    

      设置Path环境变量 

    在这里设置的Path变量是在window7系统上。

设置Java的环境变量的主要步骤,首先右击'我的电脑',找到"属性"菜单项,出现如图所示的对话框:

  

   

   点击左侧的高级系统设置这一栏,会弹出如图对话框:

  

  

    点击"环境变量",弹出环境变量的对话框,对话框中有系统变量和用变量。

   

   

    在系统变量中新建系统变量"JAVA_HOME',新建的系统变量中的变量值是JDK的安装目录。本人用的是JDK中安装在的目录是"C:\Program Files\Java\jdk1.6.0_23\jre\bin",之后点击确定就可以了。

下一步我们来修改环境变量PATH变量的值,在原文变量的前端中加入".;%JAVA_HOME%\bin",变量值,但是需要注意不要遗漏了最后的“;”,它是用来分割不同的变量值的。

JDK正确安装后以及环境配置之后,我们需要测试一下环境变量是否配置正确。点击“开始/运行”(或者菜单键+r),进入dos命令窗口,在命令窗口中输入“javac”命令,出现一下界面就说明环境配置正确了。如图

    

  

 在介绍了java的开发环境一下。在下面和大家说一下我感觉在学习java找那个遇到的迷惑,以及我在复习时发现一些我们平时没有注意到的地方。

     用户变量和系统变量的区别

 在这里来解释一下用户变量和系统变量以及为什么设置用户变量。其实用户变量和系统变量没有体大的区别。用户变量只是对当前用户有效,系统变量对所有的用户都可以。为了减少自己做的修改对别人造成的影响。故设置用户变量。对于当前用户设置用户变量和系统变量效果都是相同的,只是系统变量设置在用户变量的签名,这样可能会出现这样的一种情况,在path路径中,用户变量和系统变量都有Java命令,这样的情况下,则优先执行系统变量中PATH的中的命令..

      通过CLASSPATH来定义类

   在我们以前学习JAVA的人,对于CLASSPATH一定不陌生。几乎在每一本的JAVA书中都有介绍CLASSPATH的设置,但对于CLASSPATH环境变量的作用都常常语焉不详。

实际上,如果使用JDK1.5以上的版本,完全可以不设置CLASSPATH环境变量,在我们学习的过程中即使不设置CLASSPATH变量也可以进行Java的编译和运行。

    那么CLASSPATH的变量有什么用的,当我们使用“java Java类名”命令来运行程序时,jre到哪里去搜索Java类呢?可能有人认为在当前路径下搜索啊。这个回答的是很正确的。但是在JDK1.4的版本中没有设计这个功能,这就意味着即使当前路径已经包含了类名,并在当前路径执行“Java 类名”,系统一样找不到执行的Java类。 

如果使用JDK1.4的版本以前的版本,则需要在CLASSPATH环境变量中添加一点“。”,告诉jre需要当前路径下搜索Java类。

 除此之外,编译和运行Java程序还需要JDKlib路径下dt.jartool.jar文件中的Java类,因此还需要把这两个文件添加到classpath环境变量里 。

    因此,如果使用1.4以前的版本的jdk编译和运行Java程序,常常需要设置的CLASSPATH环境变量里值为.%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool.jar(其中的JAVA_HOMEJDK的安装目录)

后来的JRE会自动搜索当前路径下的类文件,而且使用Java的编译和运行工具时,系统可以自动加载dt.jartool.jar文件中的Java类,因此不需要在设置CLASSPATH环境量。

当然在JDK1.5的版本上的版本也可以设计环境变量,一旦设置了环境变量,jre将会按该环境变量指定的路径啊,这意味着如果在classpath环境变量中没有设置“。”也就是没有包含的当前路径,jre不会在当前的路径下搜索Java类。

如果想运行Java程序时需要临时配置JRE搜索Java类的路径,则可以使用classpath选项,既是按照如下的格式运行Java命令:

   java -classpath dirl;dir2;dir3...dirn; Java类
classpath是选项值中可以选择的一系列的路径,多个路径需要用;来分开。
 如果在运行java程序指定了classpath变量的值,jre将严格按照classpath的路径来搜索java类,
 不会在当前路径下来搜索java类,也就是说LCASSPATH变量设置不起作用。
 但是如果想CLASSPATH环境变量设置的值也起作用,按照一下命令:
 java -classpath %CLASSPATH%;.;dir1;dir2.....dirn java类
上面命令中通过 %CLASSPATH%来引用CLASSPATH变量的值,并在-classpath选项中添加一点,强制jre在当前的路径下搜索java类。
  关于classpath变量来定义类这些资料是来源课本上,资源或许有不对的地方希望大家可以多多提出,帮助改正。
  博文的次序或许有点乱,希望各位大神见谅、
  参考资料 :疯狂的java讲义  java从入门到精通