1.swf
JDK:即Java Develop Kit,Java开发工具包。
Java2:1998年12月,SUN公司发布了JDK1.2,开始使用“Java2”这一名称,目前我们已经很少使用JDK1.1版本,所以我们所说的Java都是指Java2.。J2SDK当然就是Java 2 Software Develop Kit。
JRE (Java Runtime Environment),即Java运行环境,通常已包含在J2SDK中了。如果我们仅是为了运行Java程序,而不是从事Java开发,我们可以直接下载JRE,在我们的系统上安装。
Java的开发工具包(JDK):按其应用环境的不同分三种不同的版本。
●J2SE (Java 2 Platform, Standard Edition) :Java 2 平台标准版,主要用于桌
面程序和Java小程序的开发,我们通常所说的JDK就是指J2SE。
●J2EE (Java 2 Platform, Enterprise Edition) :Java 2 平台企业版,主要用于
企业级的开发,目前我们有很多的大型应用就是基于J2EE的,如有一些电子
商务网站和税务局的网上报税系统就是基于J2EE的。
●J2ME (Java 2 Platform, Micro Edition):主要用于手持设备的开发,例如手
机、PDA等,我们手持设备的一些小游戏和名片管理程序就是通过J2ME来
开发的。
相关资源的官方下载网址:
Java 2 Platform, Standard Edition,v1.5.0
https://www.doczj.com/doc/571730816.html,/j2se/1.5.0/download.html
J2SE v 1.5.0Documentation
https://www.doczj.com/doc/571730816.html,/j2se/1.5.0/download.html
Java Tutorial
https://www.doczj.com/doc/571730816.html,/docs/books/tutorial/information/download.html
Java的特征:
简单的、面向对象的、健壮的、安全的、解释的、与平台无关的、多线程的、动态的语言。
2.swf
我们为什么要用Java
简单的
Java最初是为家用电器进行集成控制而设计的一种语言,因此它必须简单明了。Java 语言的简单性主要体现在三个方面:
1、Java的风格类似于C++,因而C++程序员初次接触Java语言,就会感到很熟悉。
从某种意义上讲,Java 语言是C和C++语言的一个变种,因此,C++程序员可以
很快地掌握Java编程技术。
2、Java摒弃了C++中容易引发程序错误的一些特性,如指针、结构、枚举以及内存
管理等。
3、Java提供了丰富的类库,可以帮助我们很方便的开发Java程序。
面向对象的
面向对象可以说是Java最重要的特性,所以它支持继承、重载、多态等面向对象的特性。Java语言的设计是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。
健壮的
Java致力于检查程序在编译和运行时的错误。Java也是一种强类型的语言,其类型检查比C++还要严格。类型检查帮助我们检查出许多开发早期出现的错误。Java自己负责内存管理,提供了垃圾回收机制,有效的避免了C++中最头疼的内存泄漏问题。
安全的
Java 的安全性可从两个方面得到保证。一方面,在Java语言里,删除了指针和释放内存等C++功能,避免了非法内存操作。另一方面,通过Java的安全体系架构来确保Java代码的安全性。当我们从网上下载Java代码在本地执行时,Java的安全架构能确保恶意的代码不能随意访问我们本地计算机的资源,例如:删除文件,访问本地网络资源等操作都是被禁的。
解释的
Java代码是解释执行的,我们使用Java编译器将Java代码编译成字节码,这是一种中间代码,然后由Java解释器解释执行。而C++程序是编译执行的,C++程序代码被编译为本地机器指令,然后执行。
与平台无关的
Java作为一种网络语言,其源代码被编译成一种结构中立的中间文件格式。只要有Java 运行系统的机器都能执行这种中间代码。Java源程序被编译成一种与机器无关的字节码格式,在Java虚拟机上运行。
多线程的
动态的
Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是我们采用C++语言进行面向对象程序设计所无法实现的。在C++程序设计过程中,每当在类中增加一个实例变量或一个成员函数后,引用该类的所有子类都必须重新编译,否则将导致程序崩溃。Java从以下几个方面采取措施来解决了这个问题。Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下来传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数值偏移量。一个在存储器中生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定。这样,对类中的变量和方法进行更新时就不至于影响现存的代码。解释执行字节码时,这种符号信息的查找和转换过程在一个新的名字出现时才进行一次,随后代码便可以全速执行。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。Java还简化了使用一个升级的或全新协议的方法。如果你的系统运行Java程序时遇到了不知怎样处理的程序,Java能自动下载你所需要的功能程序。
3. swf
Java跨平台的原理
J ava源文件的编译过程
Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译程序将Java 源程序翻译为JVM可执行代码一一字节码。这一编译过程同C/C++的编译有些不同。当C 编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创建内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了Java的可移植性和
安全性。
Java解释器的执行过程
运行JVM字节码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验和代码的执行。装入代码的工作由“类装载器”(class loader)完成。类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调用的类。当类装载器装入一个类时,该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其它类。在本台计算机上的所有类都在同一地址空间内,而所有从外部引进的类,都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们从外部引进的类不会相互影响。当装入了运行程序需要的所有类后,解释器便可确定整个可执行程序的内存布局。解释器为符号引用同特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的内存布局,Java 很好地解决了由超类改变而使子类崩溃的问题,同时也防止了代码对地址的非法访问。
随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈溢出,非法数据类型转换等多种错误。通过校验后,代码便开始执行了。
Java字节码的两种执行方式
1、即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。(也就是
编译成与硬件平台相关的代码,会加快执行速度,与C++编译执行速度基本保持
一致了)
2、解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程序的
所有操作。(这种方式通过解释执行与平台无关的java字节码来完成的,相对于
C++编译执行要慢一些)
通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节
翻译为机器代码的工作具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。
JVM规格描述
JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提供很好的灵活性,同时也确保Java代码可在符合该规范的任何系统上运行。JVM 对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码(Byte code)的格式给出了明确的规格。这一规格包括操作码和操作数的语法和数值、标识数值表示方式、以及Java类文件中的Java对象、常量缓冲池在JVM的存储映像。这些定义为JVM解释器开发人员提供了所需的信息和开发环境。Java的设计者希望给开发人员以随心所欲使用Java的自由。
JVM是为Java字节码定义的一种独立于具体平台的规格描述,是Java平台独立性的基础。
Java程序执行与C/C++程序执行的对比分析
如果把Java源程序想象成我们的C++源程序,Java源程序编译后生成的字节码就相当于C++源程序编译后的80x86的机器码(二进制程序文件),JVM虚拟机相当于80x86的计算机系统,Java解释器相当于80x86CPU。在80x86CPU上运行的是机器码,在Java解释器上运行的是Java字节码。
Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的。Java解释器实际上就是特定的平台下的一个应用程序。只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。当前,并不是在所有的平台下都有相应Java解释器程序,这也是Java并不能在所有
的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。
4. swf~10.swf
1.查看路径:set path
2.java文件中若有一个Public类,则只能有一个Public类,且文件名必须与这个Public类的类名一致,故Java文件中最多只存在一个Public类,如:
_______________________________________________________________________________ public class Welcome
{
public static void main(String[] args)
{
System.out.println("Welcome !");
}
}
class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello the World !");
}
}
则它的文件名就应该保存为Welcome.java
编译命令为: javac Welcome.java
/*由于编译器javac 对文件名Welcome.java的大小写不敏感,故可以写为
javac welcome.java*/
解释器命令为:java Welcome
/*注意java解释器解释的是java类文件,故用Welcome类名,而非文件名Welcome.java*/ 3.jar 的用法:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的)文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信
-o 只存储方式;未用ZIP压缩格
-M 不产生所有项的清单(manifest)文件
-i 为指定的jar文件产生索引信
-c 改变到指定目录,它将被递归处理。
例如:上面的java文件产生的两个Hello. class 和Welcom.class类通过jar包
压缩到Lesson.jar下则操作如下:
jar cvf Lesson.jar Hello. class Welcom.class
4.一个点号表示当前路径,两个点号表示上一层路径,因此在设置环境变量时,通常保留当前路径,常出现点号,例如:
set classpath=D:\ ;。
5.Java 的八种数据类型:初始化值byte 1 个字节(8bit)( —128 ~ 127 ) 0
short 2 个字节(16bit)( —32768 ~ 32767 ) 0
char 2 个字节(16bit)( 0 ~65535 ) ‘\u0000’(空)
int 4 个字节(32bit)有符号0
long 8 个字节(64bit)有符号0L
float 4 个字节(32bit)有符号0.0F
double 8 个字节(64bit)有符号0.0D
boolean 1 个字节(8bit)只有true和false两个值False
定义变量并分配空间后,各类型的变量自动进行初始化赋值。
6.纠错
====================================================================== public class Welcome //文件名保存为Welcome.java
{
public static void main(String[] args)
{
byte b;
b=3; //编译发现这一行没出错,说明3并不是作为int常量的.
b=b*3; /*编译发现这一行出错,这是因为byte类型的变量在参与运算被自动
提升为int类型了.应改为b=(byte)(b*3),这样运行结果为9. */ System.out.println(b);
}
}
public class Welcome //文件名保存为Welcome.java
{
public static void main(String[] args)
{
float f;
f=1.3; /*错误,由于java中小数常量1.3被认为是8个字节的双精度double
类型,现被赋给只有4个字节的单精度float类型,显然会丢失精度.
因此改为f=1.3f; 1.3f表示为单精度float型变量. */
System.out.println(f);
}
}______________________________________________________________________________ public class Welcome
{
public static void main(String[] args)
{
if(1) //编译报错出现不兼容的数据类型,将1改为true,
//java中逻辑值只有两个true和false.
{
}
}
}
7.数组的用法
int[] num;
int [] num;
int []num;
//以上三行完全等价;
int num[3];//error
int[] num=new int[3];
=================================================================== int[] num;
num={1,2,3};
//错误的定义,应改为int[] num={1,2,3};或改为int[] num=new int[]{1,2,3};
public class Hello //未注明error的均为正确的
{
public static void main(String[] args)
{
int[][] numx;
numx=new int[3][];
numx[0]=new int[5];
numx[1]=new int[3];
numx[2]=new int[2];
numx[0][4]=45;
numx[1][2]=34;
numx[2][1]=21;
//int[][] num=new int[][]{1,2,3,4,5,5};//error
int[][] num0=new int[][]{{1,2,3},{4,5,5}};
//int[2][] num=new int[][]{{1,2,3},{4,5,5}};//error
int[][] num={{1,2,3},{4,5,5}};
int[][] num1={{1,2,3},{4,5,6}};
int[][] num2={{1,2,3},{4,5},{6}};
}
}
总结一:javaweb课程总结刚开始学的时候,感觉这两门课程好高大上的样子,因为自从学软件工程这个专业以来,一直都是学的理论性、框架性的东西,就没有接触到编程的实质性的部分,终于开始学编程了,感觉蛮兴奋的,也是精神饱满,信心十足,怀着一腔热血来听课。 由于JAVAWEB和JSP两门课是同时上的,而且每次都是一整上午,上课时间很长,老师一直有条不紊的讲着,虽然时间很长,但是每当大家上完课,心中都是有一种充实的感觉,大家都觉得有所收获,所以也就不曾觉得累了。 JAVAWEB这门课让我认识了以前见所未见闻所未闻的专业术语,Web应用程序的概述。我从中了解到Web应用程序的三层体系结构:表示层、业务层、数据存取层。从而想到了学数据库设计时的数据库设计三大范式,它们同是叙述在编写代码时应做的规划和应遵循的规则,这种规划在以后的学习中时有出现,说明编程并不是一味地进行循环判断、死记硬背,而需要在技术上有所加强、在效率上有所提高。做任何事都是如此,事先必须有目标、有计划,有统筹,这样执行时才不会盲目,才不会事倍功半。学习编程对综合能力都是一种培养。 接下来是JSP知识。要学JSP,就必须会HTML,如果HTML学不通,这对以后的学习都是一个瓶颈。基础一定要打扎实,吃透,否则上层建筑的建起就不会很顺利甚至没法起步。然后是JavaBean。以下是个人对JavaBean的一点学习体会。JavaBean里有set()和get()方法,用这些方法能很容易地传值,逻辑上更标准,代码看起来也更规范。但set()和get()方法只是用来对属性进行操作的,所以如果是进行复杂的逻辑或对数据库进行操作等,那么就不要写成set()和get()方法,只用一个有返回值的方法就足以。这样直观方便,且符合规范。总之,set()和get()方法不要没有效率地滥定义。 接着是Servlet。Servlet是一个用Java编写的应用程序,在服务器上运行,用来处理请求和响应,也可以单独做为一个Web页面。然后讲的是标签,包括自定义标签和JSP标准标签库。用一般的Java代码都几乎能实现它们的功能。它们的好处是提高了代码的重用性。 我们需要配置的坏境有JDK,Tomcat,还要用到Myeclips这一基础的编程工具。在学习JSP之前,由于没有网页编程的基础,便学习了HTML这种文本标记语言,自己试着去做简单的静态网站。后来学做JSP动态网站时,就涉及到了多方面的知识,JSP内部对象及内部对象所涉及的方法,JSP与数据库连接,如何去引用数据库。这门课更是巩固了JAVA 这一基础编程语言,要求对JAVA掌握的要透彻,每门语言要学扎实,深入理解,都要花费很大的功夫,不是容易的事情。 Jsp与servlet有一定的区别,Servlet可以看作是HTML的Java代码,而JSP可看作是包含Java代码的HTML。共同点:JSP和Servlet实际上是一回事。JSP页面最终要转换成Servlet,并进行编译,在请求期间执行的实际上是编译后的Servlet。因此,JSP页面不过是编写Servlet的另一种方式。各自应用的范围:Servlet比较适合于做处理任务,如做业务逻辑;JSP适合于表示任务,如网页制作,生成动态网页。 对JAVAWEB和JSP课程的知识就简单介绍到这里,本学期的这两门课程让我对软件工程这门课有了一个全新的认识,我真切的学到了能用的东西,大学里的很多课是浪费时间,而
从零开始学VC系列教程之四.并口控制与类的使用 学习目标:掌握VC下并口程序的方法及类的使用. 课程详解: 参照第一章新建一个基于对话框的Vc工程,名称定义为Eg04. 图01 (原文件名:01.JPG) 类型选基于对话框. 在本例中,我们要用到一些资源,现列出如下 WinIo.sys WinIo.dll 这是一个动态库,与WinIo.sys完成同并口的连接. WinIo.lib 这是为静态调用提供的引入库文件.虽然引入库文件和静态库文件都是以Lib为扩展名的,但实际上有本质的区别. WinIo.h 这是IO操作的头文件. ParallelPort.cpp 这是一个并口操作类,用于同WinIo接口,并定义了相关的操作函数.虽然这个类用于同WinIo的操作接口,但这个类并不是从WinIO派生的,只是一个独立的自定义类.至于类的自定义,以前我们也提到过. ParallelPort.h 这是并口类的头文件. 这几个文件是可以从网上下载到的,并不是我做的,所以这个动态库大家就不用问我要源码了,因为我也没有. 首先,把WinIo.lib WinIo.h ParallelPort.cpp ParallelPort.h拷贝到工程目录中,后面马上就要用到.再把WinIo.Dll WinIo.sys 拷贝到工程目录的Debug目录中,以后工程发布后,这两个文件要跟随工程一起. 下面添加引入库到系统中,点击[工程]->[设置]在弹出的对话框中选择[连接]标签,然后在[对象/库模块]中加入WinIo.lib完成后如下图.
图02 (原文件名:02.JPG) 然后加入并口操作类的头文件.一般来说,网上可以下载到的源码都是以类的形式给出的,VC的好处也在于可以把一个操作封装成类,以便在不同的工程中调用.如图,双击类管理器中的Ceg04Dlg在弹出的文件中加入#include "ParallelPort.h" //添加并口类头文件 图03 (原文件名:03.JPG) 同时,还要定义一个类变量,用于并口类的操作. 在刚打开的类定义文件中找到CEg04Dlg类,并加入一个类变量m_Port,完成后如下图所示
第一章Web开发基础知识(简单描述)表单(续) 表单元素