Posts Tagged ‘java’
java
java
Java的(PO,VO,TO,BO,DAO,POJO)解释
PO(persistant object) 持久对象
在 o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中 的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
VO(value object) 值对象
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。
TO(Transfer Object),数据传输对象
在应用程序不同tie(关系)之间传输的对象
BO(business object) 业务对象
从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、 关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO, 关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
(BO是很多人都不容易理解的地方,这里特别解释一下) 关于BO主要有三种概念
1 、只包含业务对象的属性;
2 、只包含业务方法;
3 、两者都包含。
在实际使用中,认为哪一种概念正确并不重要,关键是实际应用中适合自己项目的需要。
POJO(plain ordinary java object) 简单无规则java对象
纯的传统意义的java对象。就是说在一些Object/Relation
Mapping工具中,能够做到维护数据库表记录的persisent
object完全是一个符合Java
Bean规范的纯Java对象,没有增加别的属性和方法。我的理解就是最基本的Java
Bean,只有属性字段及setter和getter方法!。
DAO(data access object) 数据访问对象
是一个sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和 PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合VO,
提供数据库的CRUD操作…
O/R Mapper 对象/关系 映射
定义好所有的mapping之后,这个O/R
Mapper可以帮我们做很多的工作。通过这些mappings,这个O/R
Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了。
实体Model(实体模式)
DAL(数据访问层)
IDAL(接口层)
DALFactory(类工厂)
BLL(业务逻辑层)
BOF Business Object Framework 业务对象框架
SOA Service Orient Architecture 面向服务的设计
EMF Eclipse Model Framework
Eclipse建模框架
java, php, ruby
Java之父称PHP,Ruby以及C#,不足为惧
James Gosling上周参加了纽约的Sun 全球教育研讨会(World Wide Education & Research Conference),在会上这位Java 之父进行了演讲,并就提问进行了回答。
有些人问道当前Java 所面临的威胁时,Gosling给予了这样的回答,“PHP 和Ruby 是非常好的系统,但是它们作为脚本语言来发挥力量,只局限于网页这一领域内。”
当Gosling谈到Microsoft 的C# 时,“曾经一度我们很担心他们会做出创造性的东西——现在看他们要专注于一个平台是希望渺茫。”
“PHP 能够简化产品因为它是100%瞄准网页的,”然而对于Java,他说,“我们拥有平衡的艺术——简化与力量的双赢。”
最后James Gosling 说:“任何关于Java 相对PHP、Ruby还是其他语言的讨论都是没有意义的,我们同样在使用其他语言,你可以应用PHP 或者Python,以及其他语言与Java一起工作。许多人这样做。”
产业新闻
Bundle.update:Java EE中的OSGi、JSR 294被叫停
自从上次的bundle.update发 布以来,在OSGi与模块化Java领域中发生了一系列值得我们关注的事件:JSR 294被叫停、Enterprise Expert Group发布了第4个草案、WebSphere上可以直接运行OSGi应用以及即将到来的OSGi大会对预先报名者提供折扣优惠,同时演讲人招募的时间 即将截止。
JSR 294被叫停
Sun领导的两个模块化JSR(分别是JSR 294——Java语言改进的模块化支持,以及JSR 277——Java模块化系统)都已被叫停。这样就剩下JCP批准的模块化系统JSR 291(虽然基于有些古老的OSGi 4.1)仍活跃在各种系统中了,其中也包括Sun新近发布的GlassFish v3应用服务器。
我们尚不清楚JSR 294为何会被叫停(JSR 277已经被叫停一年了)。小组收到的上一封邮件表明:
- 除了实现JSR以外,JDK 7还将提供特定于实现的特性,比如classpath(没有任何一个JSR提过这部分内容)以及Jigsaw模块化系统。
- JDK模块化使用了Jigsaw模块化系统。模块化的可见性是由一个原型化的模块info.java文件控制的,这在未来可能会发生变化。模块的私有访问实际上并没有在模块化中使用到,这部分主要是起引导作用的。
- 关于Jigsaw的进一步讨论将在Jigsaw-dev列表中展开。
简单模块系统自从被提出后就没有什么新进展,尽管版本的事情是由JSR 294控制的,但事实却并非如此,因为其开发过程是在jigsaw-dev邮 件列表上进行的,而该邮件列表却游离于JSR 294专家组的邮件列表之外。种种事实表明Jigsaw采取了特定于实现的特性来模块化JDK,虽然这本身是非常好的,但却无法实现编写一次,到处运行的 模块。可能以后这都不算什么大事了,因为JDK 7最早也要到2011年才会发布,应用服务器已经将宝压在了OSGi上了。
更新:在本新闻发布后,Alex Buckley证实这种停止实际上是自动的,缘于提案发布的时间而不是说项目就停止开发了。
WebSphere、GlassFish、DM Server以及基于OSGi的服务器
Kirk Knoernschild发文表明一些企业正在构筑自己的OSGi,WebSphere V7 alpha最近就声明可以将OSGi bundle部署到WebSphere中(虽然从2006年开始WebSphere server就已经运行在OSGi内核上了)。
最近发布的GlassFish v3也将OSGi运行时引入到了Sun的Java应用服务器中。尽管GlassFish还不支持直接运行本地的OSGi bundle,但我们可以将其置于Equinox和Felix上,可以在运行着的GlassFish服务器上同时运行其他bundle。
SpringSource的dm Server 2.0.0.M6已经可以运行OSGi web bundle了,借助于其bundle仓库,dm Server指引着企业运行时的前进方向。
Maven 3与Tycho构建、仓库以及Eclipse Marketplace
随着Maven 3(其Tycho可以构建基于OSGi的应用)发布日期的临近,它将成为Eclipse构建EGit以及Tigerstripe的首选。
相对于P2仓库来说,Maven仓库的查询能力受到了人们的质疑,但事实上,Maven仓库也可以进行查询。有事实可以证明,Maven仓库是整个Maven构建过程中最为成功的一个方面,它可以根据依赖关系自动下载所需的程序库。从Pack200压缩这个角度来看,P2可能更加高级一些,它还可以更新非JAR组件,然而Mave的über仓库在广度上轻而易举地就超越了Eclipse P2仓库。不仅如此,P2仓库经常被切分成多个独立的仓库,而Maven则具有一个所有项目都可共享的全局仓库。
最近,Eclipse基金会发布了Eclipse Marketplace,它源自于成功的Eclipse插件中心2站点。最初建立EPIC的目的是提供一个中央下载站点,为那些不在Eclipse.org站点上的流行插件提供下载服务,比如Findbugs和Checkstyle。
Eclipse基金会在2006年购买了EPIC的使用权,但后来就基本没再动过它,直到最近开发出了Eclipse Marketplace后这一点才有所改观。在这段时间内,由于缺乏统一的下载结构以及从Update Site到P2的转变极大地限制了中央下载站点(用于搜索及下载插件)的发展势头。
除了插件以外,新的Marketplace还托管了RCP应用(既有商业的,也有免费的)以及培训与咨询供应商。
最后要说的是IntelliJ 9的发布,其社区版与商业版都提供了对OSGi应用的支持。由于该顶级Java IDE可以在本地构建OSGi应用,同时对OSGi应用又提供了巨大的支持,开发模块化Java应用变得空前的简单。
OSGi 4.2 EEG草案发布
最近Enterprise Expert Group发布了第4个草案。EEG的目的是定义一套规范以便JEE风格的应用可以作为本地bundle运行在OSGi运行时中。
- 现在Web应用可以作为bundle使用了。这样不仅使得OSGi运行时能够托管WAR(与Jetty之类的服务器一样),同时WAR还可以在运行时中拥有版本依赖。Pax Web早就可以实现这一点了,但现在形成了标准,任何OSGi运行时都可以使用了。
- OSGi框架中对bundle的JMX控制,对于核心OSGi服务的标准化绑定,比如Package Admin以及Cofniguration Admin等等。
- 事务已经作为JTA绑定的一部分,这样就可以从OSGi服务中获取事务了。
- JNDI访问既可以从OSGi中获取,也可以在OSGi服务间得到。
- 兼容于OSGi的JDBC工厂(与Class.forName()不同)。
凭借这些服务,企业应用可以运行在OSGi环境中而无需完整的JEE栈。尽管JEE 6已经发布,但它有可能是最后获得批准的几个JSR之一,Mark Reinhold如是说:
Q:现在为何不开启一个closures JSR,让专家组完成提案工作?
A:到目前为止Project Coin还没有一个JSR,原因与此类似,直到JCP执行委员会内部的争论平息之后才有可能提出新的Java SE JSR。
即将到来的OSGi大会
伦敦将于今年1月23日举办OSGi DevCon London,同时还将举办JAX London。现在,大会的议程已经确定下来了,Kirk Knoernschild将进行主题演讲。
Santa Clara将于今年的3月22——25日举办OSGi DevCon,同时还有 EclipseCon 2010。Robert “Bob大叔” Martin将进行主题演讲。目前还在招募演讲者,如果你有这方面的想法,请递交你的提案。
查看英文原文:Bundle.update: OSGi in Java EE, JSR 294 Marked Inactive
java
DataNucleus AccessPlatform 2.0.0 发布
DataNucleus AccessPlatform 2.0.0发布!此次发布主要是对之前的里程碑版本进行bug的修复,提供一个更稳定的版本。

AccessPlatform是一个开源的Java持久化平台,源自开源项目JPOX(http://www.jpox.org),致力于JDO的实现。
DataNucleus AccessPlatform通过JDO和JPA APIs向RDBMS、ODBMs、ODF 、LDAP、JSON 、Google BigTable、 Amazon S3、HBase、db4o、XML、LDAP以及Excel数据提供持久化访问功能。
点击查看详情:http://www.datanucleus.org/products/accessplatform_2_0/whats_new.html
java
Java 6 Update 18发布,支持Windows 7
Java 6 Update 18 现在可以下载了。本版本的主要特点之一是对Windows 7的支持;还有bug的修复,性能的提升,JavaDB的更新,还包含最新办的Java的性能分析工具和VisualVM。
下载:http://java.sun.com/javase/downloads/widget/jdk6.jsp
JavaDB更新到了10.5.3版本:
VisualVM从1.1.1更新到了1.2.1:
- Sampling CPU and Memory profiler plugin (VisualVM-Sampler available on Plugins Center)
- Support for multiple jstatd connections on a single local/remote host
- New charts with dynamic tooltips, public Charts API for plugins
- Monitor and Threads tab are saved into Application Snapshot
- Application Snapshots can be opened using the Load action or –openfile parameter
- Properties UI for Applications, Hosts and Snapshots, public Properties API for plugins
- Customizable proxy settings in Options dialog
- UI for customizing SSL certificates in Options dialog (VisualVM-Security available on Plugins Center)
- Enhanced JMX API to enable customizing JMX environment/connections by plugins
- Display name defined by the monitored application: visualvm.display.name property
- Improved performance for remote X sessions
- Automatic detection of broken jvmstat on Windows (username capitalization vs. hsperfdata file)
- Various UI improvements: main menu, toolbar and context menu; system (theme) colors; About dialog, profiler snapshots, HeapWalker
- Built on NetBeans Platform & profiler 6.7.1:
- Exporting profiler snapshots to HTML, XML and CSV
- Computing retained size in HeapWalker
- OQL scripting support in HeapWalker (OQL Syntax Support [enhanced OQL editor] available on Plugins Center)
- Thread stack traces at the heap dump in HeapWalker
- Improved appearance on Mac OS X
点击查看详情:http://java.dzone.com/news/java-6-update-18-now-windows-7
java
Tmax JEUS 7 通过Java EE 6兼容性测试
SUN宣布TmaxSoft JEUS 7预览版通过了Java EE 6兼容性测试。现Tmaxsoft JEUS 7的预览版已经可以从Tmaxsoft的网站上下载到,该公司表示正式版要会在2010年底完成。
另外RedHat和Caucho在最近一段时间会放出JavaEE6 Web容器的实现,Apache Geronimo声称会在2010年底实现所有的Java EE 6标准。
详情查看http://blogs.sun.com/theaquarium/entry/tmaxsoft_jeus_7_is_the
php
Php与java结合解析xml
首先如果你对JAVA与PHP不感兴趣或者说也不打算学习两者的话请不要浪费时间在这里。
请先安装JAVA的执行环境与PHP结合,具体参考http://www.phpx.com/happy/thr78795.html或者下载http://www.javax.org/old/download/JavaXml.rar
里面我写有个readme.txt说明文档,这个压缩包是个简单的例子。有其他问题请联系我。
一开始我想用PHP解析XML,但发现PHP要解析XML有点麻烦,好象PHP5比较方便了,但我这边没有装5,还是4.3。后来我看到IBM一篇文章讲到可以利用JAVA来做,所以我现在就试验了一下。
要解析的XML文件:first.xml,内容如下:
<?xml version=”1.0″ encoding=”UTF-8″?>
<product>
<hello>
<name>小曾</name>
<age>20</age>
</hello>
<hello>
<name>雨伞</name>
<age>20</age>
</hello>
</product>
其中<product>是根,<hello>是节点,一共有两个,name值名字不一样,一个是小曾一个是雨伞,年龄一样。
下面看PHP解析时候的文件:
<?php
/*
作者:雨伞
时间:2004/12/28
*/
$JavaXml = new Java(”JavaXml”); //这里是生成一个我写的JAVA解析XML数据的类
$JavaXml->init(); //这里为初始化,比如取global.properties文件里的XML文件目录(当然你下载了例子以后要改成你的XML文件目录)
$JavaXml->Parse(”first.xml”); //指定要解析的文件,相对于global.properties文件里指定的目录下
$JavaXml->get(0); //这里为取得第一个节点
echo $JavaXml->getValue(”name”).”<br>”; //取得第一个节点name标签值
echo $JavaXml->getValue(”age”).”<br>”; //取得第一个节点age标签值
$JavaXml->setValue(”name”,”大头爸爸”); //设置第一个节点name标签值为大头爸爸
$JavaXml->get(1); //这里为取得第二个节点
echo $JavaXml->getValue(”name”).”<br>”; //取得第二个节点name标签值
echo $JavaXml->getValue(”age”).”<br>”; //取得第二个节点age标签值
?>
$JavaXml->get(0);取得节点位置,比如我的XML文件有两组<hello>,这里get(0)的话就是取第一组的<hello> ,get(1)就是取第二组的<hello>.
最后输出是
小曾
20
雨伞
20
因为$JavaXml->setValue(”name”,”大头爸爸”); 这句修改了第一个节点的name标签的值,XML文件已经被更新过了,所以当再执行一次这个PHP文件的时候结果会成为
大头爸爸
20
雨伞
20
以上简单几句就解析完了,下面是我的JAVA类,里面用到了JDOM来解析XML。
import org.jdom.* ;
import org.jdom.output.* ;
import org.jdom.input.* ;
import java.io.* ;
import java.util.*;
/*
作者:雨伞
时间:2004/12/28
*/
public class JavaXml {
public String path=null;
public String XmlFileName=null;
public SAXBuilder sax=null;
public Document doc=null;
public Element root=null;
public List xlist=null;
public Element e=null;
public Element value=null;
public String getTest(){
return new String(”haha”);
}
public JavaXml(){
}
public String init(){
InputStream is = getClass().getResourceAsStream(”global.properties”);
Properties dbProps = new Properties();
try {
dbProps.load( is ) ;
}
catch ( Exception e ) {
return (”error file”);
}
this.path=dbProps.getProperty(”XmlPath”);
return (”ok”);
}
public void get(int child){
this.e=(Element)xlist.get(child);
}
public String getValue(String name){
this.value=e.getChild(name);
return this.value.getText();
}
public void setValue(String name,String value)throws Exception{
this.value=e.getChild(name);
this.value.setText(value);
XMLOutputter xmlout=new XMLOutputter();
xmlout.output(doc,new FileOutputStream(path+XmlFileName));
}
public void Parse(String XmlFileName)
throws Exception
{
this.XmlFileName=XmlFileName;
this.sax=new SAXBuilder();
this.doc=sax.build(new FileInputStream(path+XmlFileName));
this.root=doc.getRootElement();
this.xlist=root.getChildren();
}
}
PHP也有解析XML,但太麻烦了,刚刚我看了一下PHP5提供的解析XML的方法,它是提供了几个PHP文件来解析XML,PHP4解析XML切没有多少资料可找,也不是很方便,所以这个可以针对PHP4来应用。
php
php&java的简单使用
JAVA是个非常强大的编程利器,它的扩展库也是非常的有用,这篇教程,主要讲述怎样使用PHP调用功能强大的JAVA 类库(classes)。为了方便你的学习,这篇教程将包括JAVA的安装及一些基本的例子。 windows下的安装 第一步:安装JDK,这是非常容易的,你只需一路回车的安装好。然后做好以下步骤。 在 Win9x 下加入 :“PATH=%PATH%;C:\jdk1.2.2\bin” 到AUTOEXEC.BAT文件中 在 NT 下加入 “;C:\jdk1.2.2\bin”到环境变量中。 这一步是非常重要的,这样PHP才能正确的找到需调用的JAVA类。 第二步:修改你的PHP.INI文件。 [java] extension=php_java.dll java.library.path=c:\web\php4\extensions\ java.class.path="c:\web\php4\extensions\jdk1.2.2\php_java.jar;c:\myclasses" 在PHP.INI中加入extension=php_java.dll 并在[java]中,设定好java.class.path,让它指向php_java.jar,如果你使用新的JAVA类,你也应该存入这个路径,在这篇例子中,我们使用c:\myclasses这个目录。 第三步:测试环境,创建如下PHP文件:
<?php?$system = new Java("java.lang.System");print "Java version=".?$system->getProperty("java.version")." <br>\n";print "Java vendor=".?$system->getProperty("java.vendor")." <p>\n\n";print "OS=".?$system->getProperty("os.name")." ".?$system->getProperty("os.version")." on ".?$system->getProperty("os.arch")." <br>\n";?$formatter = new Java("java.text.SimpleDateFormat","EEEE,MMMM dd, yyyy 'at' h:mm:ss a zzzz");print ?$formatter->format(new Java("java.util.Date"))."\n";?>
如果你正确安装了,你将会看到以下信息:
Java version=1.2.2
Java vendor=Sun Microsystems Inc.
OS=Windows 95 4.10 on x86
Wednesday, October 18, 2000 at 10:22:45 AM China Standard Time
这样,我们就已经成功的建立起了可以使用JAVA类的PHP运行环境,我们可以开始我们接下去的课程了。
例子1:创建和使用你自己的JAVA类
创建你自己的JAVA类非常容易。新建一个phptest.java文件,将它放置在你的java.class.path目录下,文件内容如下:
public class phptest{
/**
* A sample of a class that can work with PHP
* NB: The whole class must be public to work,
* and of course the methods you wish to call
* directly.
*
* Also note that from PHP the main method
* will not be called
*/
public String foo;
/**
* Takes a string and returns the result
* or a msg saying your string was empty
*/
public String test(String str) {
if(str.equals("")) {
str = "Your string was empty. ";
}
return str;
}
/**
* whatisfoo() simply returns the value of the variable foo.
*/
public String whatisfoo() {
return "foo is " + foo;
}
/**
* This is called if phptest is run from the command line with
* something like
* java phptest
* or
* java phptest hello there
*/
public static void main(String args[]) {
phptest p = new phptest();
if(args.length == 0) {
String arg = "";
System.out.println(p.test(arg));
}else{
for (int i=0; i < args.length; i++) {
String arg = args;
System.out.println(p.test(arg));
}
}
}
}
创建这个文件后,我们要编译好这个文件,在DOS命令行使用javac phptest.java这个命令。
为了使用PHP测试这个JAVA类,我们创建一个phptest.php文件,内容如下:
<?php?$myj = new Java("phptest");echo "Test Results are <b>" . ?$myj->test("Hello World") . "</b>";?$myj->foo = "A String Value";echo "You have set foo to <b>" . ?$myj->foo . "</b><br>n";echo "My java method reports: <b>" . ?$myj->whatisfoo() . "</b><br>n";?>
如果你得到这样的警告信息:java.lang.ClassNotFoundException error ,这就意味着你的phptest.class文件不在你的java.class.path目录下。 注意的是JAVA是一种强制类型语言,而PHP不是,这样我们在将它们融合时,容易导致错误,于是我们在向JAVA传递变量时,要正确指定好变量的类型。如:?$myj->foo = (string) 12345678; or ?$myj->foo = "12345678"; 这只是一个很小的例子,你可以创建你自己的JAVA类,并使用PHP很好的调用它!