westknight

一、java的跨平台性,即一次编译到处运行

简单地说java的跨平台性就是指,编译后的java程序可直接在不同的平台上运行而不用重新编译,这一特性使得java随着web应用的普及而迅速普及起来。而java的跨平台性是如何实现的呢?这就要理解java虚拟机和字节码的概念。 实际上,编译后的java代码并不是传统的二进制代码(如windows下的.exe文件),而是java字节码,这种字节码文件是不能直接在操作系统上执行的。要想在一个操作系统上运行一个java程序必须有一个中间环节来负责将java字节码解释成二进制码,这个中间环节就是java虚拟机(简称jvm)。由于目前大多数操作系统已经实现了jvm,所以java轻松实现跨平台性。

二、面象对象技术

java全面支持面象对象技术,这体现在class(类)是java程序构成的基本单元,一个java程序通常由许class组成,而且这些class还会有一定的继承关系,java支持class的单继承,从而使类之间的继承关系更明确。继承的结果产生类的多态性,类的多态本质上讲就是可以用父类的引用访问继承类的实现(子类对象),类的这种多态性最终形成了组件对象模型的基础,即通过接口(父类)访问实现(子类)。

三、java中的i/o操作

java中以字节流(inputstream和outputstream)、节符流(reader和writer)来分别读写二进制数据和字符据,使用非常简单有效。java类库中的file类不仅提供文件操作而且还包含文件夹操作,如下面这几行代码可以列出c盘根目录下的所有文件:

file f=new file("c://";

string [] m_dir= f.list();

for(int i=0;i

system.out.println(m_dir);

四、java中的图形及事件处理

可以用awt包或swing包的java类来进行大部分的java图形界面设计,下面的几行代码将产生一个200*200像素的窗体:

frame f=new frame("welcome";

f.setsize(200,200);

f.setvisible(true);

默认情况下,frame窗体的关闭按钮不起作用,这也是java初学者迷惑的地方。为了使用户按下关闭按钮时能关闭frame窗体,需要让这个窗体响应一个windowevent事件,具体的做法就是给这个窗体添加一个事件监听器对象,这个事件监听器就是windowlistener接口的实现。在上面的代码中插入如下代码就可以关闭窗体:

f.addwindowlistener(new windowadapter(){

??public void windowclosing(windowevent e){

system.exit(0);

??}

}

这里用到一个无名内部类,无名内部类是java中内部类的一种灵活运用方式。

五、java中线程及同步控制

线程概念的引入是为了实现并行处理,从而提高程序的效率。java中的线程实现非常简单,可以用两种方式来创建线程,一种是实现runnable接口,另一种是继承thread类重写run()方法。两种方式唯一的不同就是前者保留了继承一个类的可能(因为java只支持类的单继承,但接口没有此限制)。

永远都用start()方法来启动一个线程,线程类中的run()可以被直接调用,但决不是启动一个线程,二者有着本质的区别。 用同步控制关键字synchronized来保护线程敏感数据,synchronized块中的内容可以保证同一时刻只能被一个线程访问,所以其中的数据是线程安全的。

用object类中的wait()和notify()方法可以实现线程间交互,但要记住wait()和notify()方法只有发生在同一个对象上才能真正实现线程间交互。被某一对象wait()方法阻塞的线程需要另外一个调用了同一对象notify()的线程干预才能恢复运行。notify()方法一次唤醒一个被wait()方法阻塞的线程,notifyall()方法可以一次唤醒所有被wait()方法阻塞的线程。

六、java本地方法(native方法)的实现

java不是完美的,java的不足除了体现在运行速度上要比传统的c++慢许多之外,java无法直接访问到操作系统底层(如系统硬件等),为此java使用native方法来扩展java程序的功能。

可以将native方法比作java程序同c程序的接口,其实现步骤:

1、在java中声明native()方法,然后编译;

2、用javah产生一个.h文件;

3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了jdk带的jni.h文件);

4、将第三步的.cpp文件编译成动态链接库文件;

5、在java中用system.loadlibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在java中被访问了。

上述所提及的一些java技术具有一定的普遍性,它们基本上是在java各个方面的运用中都需要掌握的术。实际上java的运用非常广泛,而且每个方面都需要遵循不同的规范。以下是对java应用的简要介绍。

(一)理解java sdk的三个版本:

java sdk micro edition (j2me)

用于开发掌上电脑、手机等移动通信设备上使用的应用程序。并不是所有的移动设备都支持java,只有具备j2me运行环境(jvm+j2me api)的设备才能运行java程序。j2me的集成开发工具(通常都有带有一些访真器)有 sun 的j2me wireless toolkit 、ibm的visul age micro edition 等。

java sdk standard edition(j2se)

主要用于开发一般台式机应用程序。我们平时所说的jdk就指j2se,而我们学java就是从学习j2se开始的。

java sdk enterprise edition (j2ee)

用于开发分布式的企业级大型应用程序。其中的核心是entetprise java beans(ejb,分布式java组件)的开发。

(二)java小程序 (applet)

java小程序是一个继承了applet类并重写了init()、paint()、stop()等方法的的java类,它被布署在web服务器(如iis)上,当客户端请求web页时,浏览器从web服务器上将其下载到本地客户端,然后,浏览器创建该applet类的实例并调用其init()方法。(如果是ie的话,一般是由microsoft jvm 执行,装了j2sdk就用sun的)。从安全角度考虑,applet没有访问本地文件的权限。由于applet是被浏览器执行的,所以applet不需要一个main()方法。实际上,除了java application之外,所有其它java应用都不需要一个main()方法。

和它相应的微软技术是activex,也是下载到浏览器执行。

(三)服务器端java小程序 (servlet)

servlet也是一个java类,和applet形成对比,servlet是运行于服务器端的java小程序,而且servlet需要一个单独的web服务器(如tomcat)做容器。除此之外,servlet中用到的一些类(如httpservlet)并不包含在j2se api中,所以需要将servlet.jar(在tomcat的common\lib文件夹下)加到环境变量中去。下面是一个简单的servlet例子:

public class myservlet extends httpservlet{

??public void doget(httpservletrequest request,httpservletresponse response)

{

??try{

response.setcontenttype("text/html";

printwriter out=response.getwriter();

out.println("");

out.println("");

out.println("hello world");

out.println("");

out.println("");

??}catch(ioexception e){}

}

}

将这个class文件编译后放至tomcat\webapps\examples\web-inf\classes下,然后在浏览器地址栏里输入http://127.0.0.1:8080/examples/servlet/myservlet即可看到 hello world出现在浏览器中。

(四)java server page (jsp)

同servlet相似的是,jsp运行于web服务器端,并且也需要tomcat之类的容器。不同的是,由于jsp是将java代码嵌在html标记里(同asp一样用),jsp的界面设计同后台开发人员的工作可以有效分离。可以想像让开发人员用servlet写一个花捎的web页面有多困难,所以jsp+servlet混合web应用是比较理想的选择。

看起来jsp同asp的实现机制大同小异,其实也存在着本质的区别。所有的asp页面都是解释运行的,而jsp页在第一次被请求时会被编译,再以后的客户请求都是直接运行服务器上的.class文件(在tomcat的work文件夹下),所以jsp要比asp速度上快许多。

(五)java beans

java bean 是可复用的组件,对java bean并没有严格的规范,理论上讲,任何一个java类都可以是一个bean。但通常情况下,由于java bean是被容器所创建(如tomcat)的,所以java bean应具有一个无参的构造器,另外,通常java bean还要实现serializable接口用于实现bean的持久性。

(六)enterprise java beans (ejb)

java bean实际上相当于微软com模型中的本地进程内com组件,它是不能被跨进程访问的。enterprise java bean 相当于dcom,即分布式组件。它是基于java的远程方法调用(rmi)技术的,所以ejb可以被远程访问(跨进程、跨计算机)。但ejb必须被布署在诸如webspere、weblogic这样的容器中,ejb客户从不直接访问真正的ejb组件,而是通过其容器访问。ejb容器是ejb组件的代理,ejb组件由容器所创建和管理。客户通过容器来访问真正的ejb组件。 这种模型很像com+管理器,其实ejb容器正是起到com+管理器的作用,只是ejb组件相对com组件来说更易用、更安全。

总的说来,java作为面象对象技术的一个代表,在当今商业应用中更容易开发出高效的、多层的分布式应用程序,而且,由于java技术有很强的健壮性和易用性,加上同uml应用的结合,开发一个商业应用软件的周期会大大缩短,所以java会有不错的前景。

《java2核心技术》,《java编程思想》,《jsp设计》和《javaservlet编程》


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值