韵鹿ぞ撸簀avacJava语言编译器,输出结果为Java字节码javaJava字节码解释器javapDisassembeler:Java字节码分解程序,本程序返回Java程序的成员变量及方法等信息。javaprof资源分析工具,用于分析Java程序在运行过程中调用了哪些资源,包括类和方法的调用次数和时间,以及各数据类型的内存使用情况等。javahC代码处理工具,用于从Java类调用C++代码javaAppletViewer小应用程序浏览工具,用于测试并运行Java小应用程序javaDebuggerAPIJava调试工具APIPrototypeDebuggerJava调试工具原型Java开发环境还包括Java类库(包括I/O类库、用户界面类库、网络类库等)和HotJava浏览器。其中,HotJava浏览器提供了在环境下运行Java代码的一个运行系统,而且还为开发人员提供了一个Java开发框架。Java解释器是面向Java程序的一个独立运行系统,它可以一种稳定、高性能方式运行那些独立于平台的Java字节码,Java编译器则用于生成这些字节码。
2。1。1Java程序的编译
Java程序的编译程序是javac。exe。javac命令将Java程序编译成字节码,然后你可用java解释器java命令来解释执行这些Java字节码。Java程序源码必须存放在后缀为。java的文件里。Java程序里的每一个类,javac都将生成与类相同名称但后缀为。class文件。编译器把。class文件放在。java文件的同一个目录里,除非你用了…d选项。当你引用到某些自己定义的类时,必须指明它们的存放目录,这就需要利用环境变量参数CLASSPATH。环境变量CLASSPATH是由一些被分号隔开的路径名组成。如果传递给javac编译器的源文件里引用到的类定义在本文件和传递的其它文件中找不到,则编译器会按CLASSPATH定义的路径来搜索。例如:CLASSPATH=。;C:javaclasses则编译器先搜索当前目录,如果没搜索到,则继续搜索C:javaclasses目录。注意,系统总是将系统类的目录缺省地加在CLASSPATH后面,除非你用-classpath选项来编译。javac_g是一个用于调试的未优化的编译器,功能与用法和javac一样。javac的用法如下:javac'…g''…O''…debug''…depend''…nowarn''…verbose''…classpathpath''…nowrite''…ddir'file。java。。。以下是每个选项的解释。
选项解释:
…classpathpath定义javac搜索类的路径。它将覆盖缺省的CLASSPATH环境变量的设置。路径是由一些由逗号隔开的路径名组成,一般格式如下:。;例如:。;C:javadocclasses;C:toolsjavaclasses表示编译器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索C:javadocclasses目录中的所有文件,以此类推。
…ddirectory指明类层次的根目录,格式如下:javac…dMyProgram。java这样将MyProgram。java程序里的生产的。class文件存放在my_dir目录里。
…g带调试信息编译,调试信息包括行号与使用java调试工具时用到的局部变量信息。如果编译没有加上…O优化选项,只包含行号信息。
…nowarn关闭警告信息,编译器将不显示任何警告信息。
…O优化编译static,final,private函数,注意你的类文件可能更大。
…verbose让编译器与解释器显示被编译的源文件名和被加载的类名。
环境变量
CLASSPATH用来提?copy;给系统搜索用户定义的类的缺省路径。各路径由分号隔开,例如:。;C:javadocclasses;C:toolsjavaclasses表示编译器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索C:javadocclasses目录中的所有文件,以此类推。
2。1。2Java程序的调试使用java调试器
jdb导游在早期前Betal版的Java调试器jdb是命令行形式的,如用Sun公司的dbx调试器。用jdb来调试Java应用程序,在调试前,要确证你的应用程序是带标志-g编译的。例如:javac…gHelloWorld。javahelp命令将显示jdb里的可用命令列表。
》helpthreads'threadgroup'……列出线程thread--设置缺省线程Suspend'threadsid(s)'--将线程挂起resume'threadid(s)'--重新启动线程where'id'|a1|--打印线程的堆栈threadgroups……列出线程组号threadgroup--设置当前线程组print'id(s)'--打印对象或域dump'id(s)'--打印所有对象信息locals--打印当前堆栈所有局部变量classes--列出当前所知的类methods--列出一个类的成员函数stopin。--在一个成员函数里设置断点stopat:--在一行里设置断点up'nframes'--在线程堆栈里往上移down'nframes'--在线程堆栈里往下移clear:--清除一个断点step--执行当前行cont--从断点处继续执行catch--为指定的情况中断ignor--为指定的情况忽略list'linenumber'--打印源程序use'Sourcefilepath'--显示或改变源路径memeory--报告内存使用情况loadclassname--加载Java类以便调试run--开始执行加载的类!!--重复以上的命令help(?)--列出所有的命令exit(orquit)--离开调试器
2。1。3Java程序的执行
java…java语言解释器java命令解释java字节码语法:java'options'classnamejava_g'options'classname
描述:java命令由java编译器javac输出的Java字节码。classname参数是要执行的类名称。注意任意在类名称后的参数都将传递给要执行类的main函数。java执行完main函数后推出,除非main函数创建了一个或多个线程。如果main函数创建了其它线程,java总是等到最后一个线程推出才推出。
选项:
…cs;…checksource当一个编译过的类调入时,这个选项将比较字节码更改时间与源文件更改时间,如果源文件更改时间靠后,则重新编译此类并调入此新类。
…classpathpath定义javac搜索类的路径。它将覆盖缺省的CLASSPATH环境变量的设置。路径是由一?copy;由逗号隔开的路径名组成,一般格式如下:。;例如:。;C:javadocclasses;C:toolsjavaclasses表示解释器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索C:javadocclasses目录中的所有文件,以此类推。
…mxx设置最大内存分配池,大小为x,x必须大于1000bytes。缺省为16兆。
…msx设置垃圾回收堆的大小为x,x必须大于1000bytes。缺省为1兆。
…noasyncgc关闭异步垃圾回收功能。此选项打开后,除非显式调用或程序内存溢出,垃圾内存都不回收。本选项不打开时,垃圾回收线程与其它线程异步同时执行。
…ssx每个Java线程有两个堆栈,一个是java代码堆栈,一个是C代码堆栈。…ss选项将线程理C代码用的堆栈设置成最大为x。
…ossx每个Java线程有两个堆栈,一个是java代码堆栈,一个是C代码堆栈。…oss选项将线程理java代码用的堆栈设置成最大为x。
…v;…verbose让java解释器在每一个类被调入时,在标准输出打印相应信息。
环境变量
CLASSPATH用来提?copy;给系统搜索用户定义的类的缺省路径。各路径由分号隔开,例如:。;C:javadocclasses;C:toolsjavaclasses表示解释器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索C:javadocclasses目录中的所有文件,以此类推。
2。2JWS环境
JavaWorkShop是SUN公司的一个新产品;它是一个集成的java语言开发环境,它包括以下工具:lPortfolio和Project管理器l源文件编辑器lBuild管理工具l调试器l项目测试l?copy;展在线超文本连接到帮助文件这?copy;工具在JavaWorkShop的第一页都有类似Web页面的超级连接,如图:注意,JavaWorkShop采用的是当今浏览器的界面风格,你想作什么,只需找到相应的超级连接就可以了,具体编译及调试功能是用嵌如到HTML文档里的Applet实现的,因此,对习惯于用internet浏览方式的用户来说,这种界面很容易接受。
2。2。1Portfolio和Project管理器
Protfolios是一些java应用程序或Applet的集中。它让你更好的管理更多的projects。一个project是portfolio里的一个子集,它包含了以下信息:1。怎样编译本项目2。怎样调试和浏览本项目3。怎样运行本项目4。怎样发布本项目
2。2。2源文件编辑器
源文件编辑器可以从build管理器、调试器和源文件浏览器里的超级连接进入。在这个模块里,你可以输入源文件。
2。2。3Build管理工具
本模块是项目的编译器,你可以点build按钮直接进入本模块,如果某个文件出错,错误信息会提供一个超级连接,直接指到出错的源文件地点。
2。2。4VisulJava(图形界面构造)
顾名思义,本模块能让你可视化建造一个复杂界面,如果你用过VisualBasic,你会发现它们很相似。
2。2。5调试器
调试器能让你很方便地跟踪程序的执行与发现程序的错误。
本章小结:
Java语言有两个开发环境,一个是免费的JDK,是命令行方式的。还有一个JavaWorkShop,是开发java程序的集成环境。本章简要介绍了它们的使用方法。
第三章Java程序设计基础
3。1Java编程概况
现在你可以复习一下Java语言的背景材料,它的基本结构象C/C++,但任何用面向过程语言编写过程序的人都可以了解Java语言的大部分结构。
3。1。1程序结构
Java语言的源程序代码由一个或多个编译单元(pilationunit)组成,每个编译单元只能包含下列内容(空格和注释除外):*一个程序包语句(packagestatement)*入口语句(importstatements)*类的声明(classdeclarations)*界面声明(interfacedeclarations)每个Java的编译单元可包含多个类或界面,但是每个编译单元最多只能有一个类或者界面是公共的。Java的源程序代码被编译?reg;后,便产生了Java字节代码。Java的字节代码由一?copy;不依赖于机器的指令组成,这?copy;指令能被Java的运行系统(runtimesystem)有效地解释。Java的运行系统工作起来如同一台虚拟机。在当前的Java实现中,每个编译单元就是一个以。java为后缀的文件。每个编译单元有若干个类,编译后,每个类生成一个。class文件。。class文件是Java虚拟机能够识别的代码。
3。1。2注释
三种类型如下://注释一行/*一行或多行注释*//**文档注释**/文档注释一般放在一个变量或函数定义?reg;前;指示在任何自动生成文档系统中调入。这?copy;注释都是声明条目的描述。。
3。1。3标识符
变量,函数,类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。在Java语言里;标识符以字符或_;开头;后面可以包含数字,标识符是大小写有区别的;没有长度限制。
有效的标识符mynameict_networkHello_sys_pathbill
例子:inta_number;char_onechar;floatbill;
关键词abstractcontinuefornewswitchbooleandefaultgotonullsynchronizedbreakdoifpackagethisbytedoubleimplementsprivatethreadsafebyvalueelseimportprotectedthrowcaseextendsinstanceofpublictransientcatchfalseintreturntruecharfinalinterfaceshorttryclassfinallylongstaticvoidconstfloatnativesuperwhile其它保留词以下单词被保留使用:castfuturegenericinneroperatorouterrestvar
3。1。4数据类型
Java使用五种基本类型:integer(整数);floating(浮点数);point(指针);Boolean(布尔变量);CharacterorString(字符或字符串)。integer整数下边给出的数据表示都是整数的例子:4,15,089,0xAD00整数长度数据类型表示8bitsbyte16bitsshort32bitsint64bitslong
floating浮点数下边给出的数据表示都是浮点数的例子:6。37,3。7E15,3e8
浮点数长度数据类型表示32bitsfloat64bitsdouble
Boolean布尔变量下边是布尔变量的两种可能取值:truefalseCharacter字符下边给出的都是字符的