主页 | 新闻 | 深度报道 | 技术文章 | 开源软件 | 资源站点 | 书讯 | 往日版面  | 网站地图
J2ME综合技术:嵌入式LINUX中的JVM研究

【赛迪网技术报道】嵌入式系统是计算机技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术等先进技术和具体应用对象相结合后的新产品。系统无多余软件,硬件亦无多余存储器,可靠性高,成本低,体积小,功耗少;可应用于家电、工业、通信、国防等领域。其产品形态丰富多样,市场潜力巨大。

Linux具有内核可裁剪、效率高、稳定性好、移植性好、源代码开放等优点,还内含了完整的TCP/IP网络协议栈,很适合在嵌入式领域应用。专用的嵌入式Linux系统往往只有几M到十几M,包含内核和特定的硬件驱动程序和应用程序,能够被嵌入式设备的FLASH容纳。但是,其复杂的系统体制,简单有限的开发手段,使Linux下的应用程开发受到了很大的限制。

JAVA语言的优势在于其强大WORA(平台无关性)能力,为程序员提供了很方便的跨平台程序设计能力。而JVM则具有了针对不同平台,对同一JAVA代码进行编译和运行的功能。这样程序员的编程真正意义上抛开了操作系统和计算机平台之间的壁垒,实现了程序的通用性。

将JVM和嵌入式LINUX接合起来,开发适合嵌入式系统硬件和软件要求的JVM,能够极大地简化嵌入式LINUX上软件开发的复杂度,能够在任何地方,任何PC上用JAVA进行开发而不需要专门的硬件环境进行调试。这将是嵌入式系统软件开发上的革新。

原文链接: http://java.ccidnet.com/art/3539...

程序员杂谈:Ajax优于JSF的几个原因讨论

【赛迪网技术报道】Sun为什么会搞出一个JSF,JSF为什么会是现在这个样子,我想原因是这样的:首先,基于组件的Web开发将来会是一个趋势。自包含的组件便于IDE的处理,可以提高开发效率。

就是说JSF优于Struts/WebWork这类MVC框架的优势,在于它可以与IDE结合来自动生成代码。而传统的纯手工编写的MVC框架,影响了开发效率。因为Java技术在客户端并没有明显的优势。Applet已经被抛弃掉,Java的强项在服务器端。Sun不可能跑去使用JavaScript,因为在传统开发者眼里,JS只配做一点很琐碎的任务。

于是在他们设计的这个架构中,所有的用户事件都放在了服务器端来处理,这个决策造成了JSF致命的缺点。它把事件处理模型绑死在服务器上,限制了响应性更加灵敏的交互设计。随之而来的网络延迟会毁掉软件的可用性。这也是Ajax在JSF的架构中无法充分发挥作用的原因。

JSF的设计思路有点模仿VB,组件化的开发这个方向是没错的,Ajax开发将来也会走这条路。但是JSF与VB最大的差别是VB的事件模型都是位于本地来处理的。这是一种本质上的差别,所以如果JSF确实想模仿VB,那也是东施效颦。而且在JSF的设计阶段,同步的请求/响应是主流,他们的思路仍然牢牢束缚在基于页面的开发方式上。根本就没有思考过其他的可能。

异步请求/响应是Ajax与传统开发方式最大的差别,异步带来了更好的交互设计。

Java编程交互管理工具:SecureJSH新特性

【赛迪网技术报道】JavaEye上活跃的开发者Complystill(歆渊)最近发布了自己的开源SecureJSH项目,提供了一个通过SSH交互进行Java应用开发或者管理的工具。

在项目的介绍中可以得知,SecureJSH与Ptyhon里面的ipython或者Ruby里面的irb非常相似。它们都允许交互式运行语言的代码,以方便跟踪或者调试应用。但是,Java与Ruby、Python不同,后者是动态脚本语言,它们天生具有解释执行的特点(注意:当然Python支持预编译,Ruby也将在YARV中开始支持,这里指它们的解释执行状态)。我们常见的Python和Ruby发行版本基本上都包括自己的解释器(这也是它们的核心组件),但是Java是一种需要中间编译过程的语言,默认情况下它无法直接解释运行,也没有相应的解释器。

那么SecureJSH是如何实现的呢?读者首先会想到JSR-223,这个API可以自己扩展脚本语言支持,比如rhino是 Javascript解释引擎。但是使用它难以实现交互操作,因为它必须输入一个相对完整的脚本才可以运行,这样会丧失一部分交互性。SecureJSH 实际上是使用了JDK 6.0的新特性Java Compiler API(JSR-199),它提供了一组API来让程序可以动态地访问Java编译器的接口,这样就可以使用Java编译器动态检查代码语法或者动态根据 Java源码生成可以执行的字节码。这种方式与ASM的编程直接生成字节码不同,它能直接将Java源码转换为字节码,XRuby的主力开发者郑晔(网名 dreamhead)在他的Blog中这样对比了两种方案:

之前,刚刚在Blog中提到ASM,里面的代码生成工作是通过直接写 字节码完成的。现在有了Compiler API,可以考虑生成代码以Java源码的形式完成,然后,通过调用Compiler API对源码进行动态编译,这样,可以达到同直接写字节码类似的作用。使用Compiler API,肯定不如直接生成字节码来得高效,但对于不了解JVM指令的人来说这也许是一种解决方案。

java基础 java中模式和框架的介绍和区别

【赛迪网技术报道】

1.什么是模式?

模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。

Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。

模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。

什么是框架?

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

2.为什么要用模式?

因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。

为什么要用框架?

因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。

框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。

软件为什么要分层?

为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。

J2SE综合技术:使用Java网络启动部署软件

【赛迪网技术社区整理】Java网络启动(Java Web Start (JWS) )可以实现在网络浏览器中运行具备全部特色的Java应用软件。Sun公司在2001年三月发布的Java1.0就已经具备了对JWS的支持,自从J2SE1.4版本以来,JWS就已经成为Java运行时环境(Java Runtime Environment (JRE) )的默认配置,不必再单独安装了,在这篇文章中,我将向您介绍这一重要技术。

技术

JWS是与网络浏览器相结合的应用软件,当用户点击链接的时候就会指向一个Java网络启动协议(Java Network Launching Protocol (JNLP) )文件,然后浏览器自动启动JWS,接着下载、缓存并运行基于Java技术的应用软件。

在JWS背后的技术是JNLP及其API,它们是在Java团体进程(Java Community Process)中开发的。JWS实际上是JNLP规范的一个参考实现,JNLP技术定义了一个标准的文件格式,该格式描述了如何调用一个JNLP文件。

既然安装链接可以作为普通的HTTP URL的链接,那么您就可以通过网页来检查客户端是否安装了JWS,您可以在IE中通过以下代码来检查:

Java编程高手对CLASSPATH应用的详细介绍

【赛迪网技术社区整理】如何设置CLASSPATH,是初学者常提出的问题。网上有很多文章提到了许多如何设置的方法,但是都没有讲为什么要这样设置(令人感到悲哀的是:绝大部分的人的观点是不正确的)。

为了帮助大家更好的学习JAVA的基本知识,同时也是锻炼自己的Type水平,于是有了这篇文章的诞生。主要参考资料来自来自官方JDK文档,希望对大家有用(所说的观点针对1.4.2 and 5.0版本)。

1. 预备知识

1.1安装JDK

到http://java.sun.com 根据不同的操作系统,下载相应的J2SE JDK 版本 (写这篇文章时最新的JDK 为1.5 update 7)。假定我们把JDK安装到D:\JDK\1507 ,不安装public JRE。

1.2 设置path

在[我的电脑]上右击,选择[属性]。再选择[高级]-[环境变量],在[系统变量]中添加一个新的变量

JAVA_HOME=D:\JDK\1507,然后再编辑path变量,在原来的path前面添加[ %JAVA_HOME%\BIN; ]

(方框中的文字)。这样就完成了JAVA的基本设置。(windows 98 下如何在autoexec.bat 中设置,请自己找资料)

1.3 演示程序

为了帮助理解,我写了一个JavaBootTest.java 的小程序来显示。

java编程进阶 关于java编程中的JDBC的介绍

【赛迪网技术社区整理】JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。

一、ODBC到JDBC的发展历程

说到JDBC,很容易让人联想到另一个十分熟悉的字眼“ODBC”。它们之间有没有联系呢?如果有,那么它们之间又是怎样的关系呢?

ODBC是OpenDatabaseConnectivity的英文简写。它是一种用来在相关或不相关的数据库管理系统(DBMS)中存取数据的,用C语言实现的,标准应用程序数据接口。通过ODBCAPI,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口。

1.ODBC的结构模型

ODBC的结构包括四个主要部分:应用程序接口、驱动器管理器、数据库驱动器和数据源。

应用程序接口:屏蔽不同的ODBC数据库驱动器之间函数调用的差别,为用户提供统一的SQL编程接口。

驱动器管理器:为应用程序装载数据库驱动器。

数据库驱动器:实现ODBC的函数调用,提供对特定数据源的SQL请求。如果需要,数据库驱动器将修改应用程序的请求,使得请求符合相关的DBMS所支持的文法。

数据源:由用户想要存取的数据以及与它相关的操作系统、DBMS和用于访问DBMS的网络平台组成。

关于如何用Java动态代理实现AOP的技术说明

【赛迪网技术社区整理】目前整个开发社区对AOP(Aspect Oriented Programing)推崇备至,也涌现出大量支持AOP的优秀Framework,--Spring, JAC, Jboss AOP 等等。AOP似乎一时之间成了潮流。Java初学者不禁要发出感慨,OOP还没有学通呢,又来AOP。本文不是要在理论上具体阐述何为AOP, 为何要进行AOP . 要详细了解学习AOP可以到它老家http://aosd.net去瞧瞧。这里只是意图通过一个简单的例子向初学者展示一下如何来进行AOP.

为了简单起见,例子没有没有使用任何第三方的AOP Framework, 而是利用Java语言本身自带的动态代理功能来实现AOP.

   让我们先回到AOP本身,AOP主要应用于日志记录,性能统计,安全控制,事务处理等方面。它的主要意图就要将日志记录,性能统计,安全控制等等代码从 商业逻辑代码中清楚的划分出来,我们可以把这些行为一个一个单独看作系统所要解决的问题,就是所谓的面向问题的编程(不知将AOP译作面向问题的编程是否 欠妥)。通过对这些行为的分离,我们希望可以将它们独立地配置到商业方法中,而要改变这些行为也不需要影响到商业方法代码。

假设系统由一系列的BusinessObject所完成业务逻辑功能,系统要求在每一次业务逻辑处理时要做日志记录。这里我们略去具体的业务逻辑代码。

java应用 tomcat中实现https安全连接的方法

【赛迪网技术报道】

SSL, 或者Secure Socket Layer,是一种允许web浏览器和web服务器通过一个安全的连接进行交流的技术。这意味着将被发送的数据在一端被翻译成密码,传送出去,然后在另一端解开密码,再进行处理。这是一个双向的过程,也就是浏览器和服务器都需要在发送数据之前对它们进行加密。

SSL协定的另一个重要方面是认证(Authentication)。这就是说,在你开始试图通过一个安全连接与一个web服务器交流的时候,这个服务器会要求你的浏览器出示一组证件,通过“鉴定”的方式来证明这就是你所声明的网站。

在某些情况下,服务器还会要求你的web浏览器的认证书,证明你就是你所说的那个人。这就是所知的“客户认证”,尽管实际情况中,更多地用在商务-对-商务(B2B)交易,而不是对个人用户。

但大多数有SSL功能的web服务器不要求客户认证(Client Authentication)。

证书

为了能实施SSL,一个web服务器对每个接受安全连接的外部接口(IP 地址)必须要有相应的证书(Certificate)。关于这个设计的理论是一个服务器必须提供某种合理的保证以证明这个服务器的主人就是你所认为的那个人。这个证书要陈述与这个网站相关联的公司,以及这个网站的所有者或系统管理员的一些基本联系信息。

这个证书由所有人以密码方式签字,其他人非常难伪造。对于进行电子商务(e-commerce)的网站,或其他身份认证至关重要的任何商业交易,认证书要向大家所熟知的认证权威(Certificate Authority (CA))如VeriSign或Thawte来购买。这样的证书可用电子技术证明属实。实际上,认证权威单位会担保它发出的认证书的真实性,如果你信任发出认证书的认证权威单位的话,你就可以相信这个认证书是有效的。

基于JDK5.0一些collection类的使用总结

【赛迪网技术社区整理】

在5.0中,collection最大的一个改变就是可以指定它的具体类型:

List list=new List;

两个最基本的接口:

public interface Collection

{

boolean add(E element);

Iterator iterator();

. . .

}

public interface Iterator

{

E next();

boolean hasNext();

void remove();

}

在5.0以前,常用的形式就是:

Collection c = . . .;

Iterator iter = c.iterator();

while (iter.hasNext())

{

String element = iter.next();

do something with element

}

但是在5.0中加入另外一种循环方式,类似于for each:

for (String element : c)

{

do something with element

}

这种方式对任何实现了Iterable接口的类都适用。

在使用remove的时候特别要注意的一点是,在调用remove之前必须先调用一次next方法,因为next就像是在移动一个指针,remove删掉的就是指针刚刚跳过去的东西。即使是你想连续删掉两个相邻的东西,也必须在每次删除之前调用next。

对collection排序和查找

Collections类的sort方法可以对任何实现了List接口的类进行排序。在排序过程中,他默认这些类实现了Comparable接口,如果想用其他方法排序,可以在调用sort方法的时候提供一个Comparator对象: