`
windy2coast
  • 浏览: 55150 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

全面认识JAVA

阅读更多

以下是Java标准技术的一些要点:

一、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<m_dir.length;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()方法,从安全角度考虑,Applet没有访问本地文件的权限。由于Applet是被浏览器执行的,所以Applet不需要一个main()方法。实际上,除了Java Application之外,所有其它Java应用都不需要一个main()方法。

(三)服务器端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("<html>");
out.println("<body>");
out.println("Hello world");
out.println("</body>");
out.println("</html>");
??}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会有不错的前景。

分享到:
评论

相关推荐

    《Java EE技术与应用》[张军朝][电子教案(PPT版本)]

    第一篇介绍了Java EE的概念和Java语言基础以及实际开发中涉及的各种基础技术,包括SQL语言与MySQL、XML、HTML、CSS、JavaScript、Servlet、JSP等,可使读者全面认识Java EE以及各种基础技术。第二篇以Java EE企业...

    谈我对java的一些认识

    这篇文章将深入探讨Java的优点和缺点,帮助我们更全面地理解这种语言。 首先,Java的语法相对简单,尤其与C和C++相比,它去除了指针的概念,这使得初学者能够更容易地理解和掌握。Java的自动垃圾回收机制也是一个...

    java学习笔记比较全面

    本篇笔记旨在为初学者提供一个全面的Java学习指南,涵盖了语言的基础概念和技术。 1. **面向对象编程三大原则** - **封装**:封装是将数据和操作这些数据的方法绑定在一起,形成一个独立的单元,对外部世界隐藏...

    Java软件开发实战 Java基础与案例开发详解 1-2 认识java语言 共10页.pdf

    #### 1-2 认识Java语言 **1.2.1 Java语言的特性** Java是一种功能强大且用途广泛的编程语言,其核心特性包括: 1. **简单高效**:Java语言的设计理念之一就是简单易学,同时又具备高效的执行能力。它去除了许多...

    全面认识Android OS.ppt

    本PPT文档带你全面认识安卓系统 Contents 一、Android架构层次介绍 Java Framework重要模块介绍 Native Framework重要模块介绍 二、 Android OS is“Micro-kernel” Micro-kernel introduction Why Android OS...

    java多线程全面总结

    java多线程全面总结,简单的介绍多线程技术中的各种应用问题,是你对多线程有更多的认识!

    java教程课件java教程课件

    【Java教程课件】是为初学者和有一定经验的开发者准备的一系列教学资源,旨在深入理解和掌握Java...通过这个【Java教程课件】,学习者可以逐步建立起对Java编程的全面认识,为成为一名合格的Java开发者打下坚实的基础。

    用Java编写第一个区块链

    用Java编写第一个区块链,带你认识区块链的技术原理与关键技术点。

    《JAVA语言程序设计》期末考试试题及答案_java期末考试_java_

    本资料《JAVA语言程序设计》期末考试试题及答案提供了全面的学习和复习指南,帮助学生理解和掌握Java编程的核心概念。 Java期末考试通常涵盖以下几个核心知识点: 1. **Java基础知识**:包括Java的历史、特点、...

    JDK8全面认识

    JDK 8作为Java开发中的一个重要版本,带来了许多关键的更新和改进,对于Java开发者而言,全面了解JDK 8中的新特性是十分必要的。在本知识点介绍中,我们将重点讨论JDK 8中的lambda表达式和函数式接口,以及相关的...

    Java 编程的vnc

    【Java编程的VNC】 VNC(Virtual Network Computing)是一种远程桌面协议,允许用户通过网络访问和控制远程计算机的图形...通过这样的项目,开发者不仅可以提升自己的Java技能,还能对远程桌面技术有更全面的认识。

    java程序员总结报告

    【Java程序员年终总结】 作为一名Java程序员,我在2010年的经历让...2010年,我在Java程序员的道路上迈出了坚实的一步,新的一年,我将继续深化专业技能,提升自我,以更全面的视角和更强的技术实力迎接2011年的挑战。

    java 学习手册 chm 5本 Java语言入门

    这些内容构成了Java语言的基础,对于初学者来说,通过这5本CHM手册的学习,可以逐步建立起对Java编程的全面认识。每本书可能都会深入讲解上述的一个或多个方面,并提供实例代码帮助理解和实践。在学习过程中,结合...

    JAVA初步学习课件

    【JAVA初步学习课件】是针对Java初学者设计的一系列学习资源,涵盖了从基础到进阶的多个章节,旨在帮助新手全面理解Java编程语言...通过它,你可以逐步建立起对Java编程的深刻认识,并在实践中不断提升自己的编程技能。

    Java代码审计(入门篇).pdf

    本书《Java代码审计(入门篇)》是一本系统、全面、实战的Java代码审计入门图书,旨在帮助Java开发人员快速掌握Java代码安全审计技巧。全书从浅入深地介绍了Java代码审计的流程、Java Web漏洞产生的原理,以及实战...

    java认识UML类图元素

    开发Java应用程序时,开发者要想有效地利用统一建模语言(UML),必须全面理解UML元素以及这些元素如何映射到Java。本文重点讨论UML类图中的元素。类图是最常用的UML图,它用于描述系统的结构化设计。其中包括类关系...

    java四大名著pdf

    阅读这些书籍,不仅可以提升你的Java技术水平,还能让你对整个Java生态系统有更全面的认识。 在学习过程中,结合实践项目和实际问题,将理论知识应用于解决实际问题,将使你的Java技能得到质的飞跃。记住,持续学习...

    java的学习历程.pdf

    书中不仅涵盖了基础语法,还涉及了许多深入的细节,使得读者能够更全面地了解Java。然而,对于初学者而言,这本书可能过于深入且复杂,因此建议先从较为基础的书籍开始,如Prentice Hall PTR的《Core Java 2》(国内...

Global site tag (gtag.js) - Google Analytics