燕之庐网站建设 - 优质网站设计公司

Posts Tagged ‘java’

java

2010/07/31

Java更换企业名称导致Eclipse崩溃,甲骨文干的好事

Tags:

Java 1.6.0_21中,Java的公司字段从“Sun Microsystems, Inc”改为了“Oracle.”,但这一改动却导致了始料未及的后果:因为有些应用程序是需要依靠公司字段识别虚拟机。集成开发工具Eclipse 3.3版后的版本,包括刚刚发布的Eclipse Helios,都由于这一改变而报OutOfMemoryError错误,因此而发生崩溃。Java是通过自动更新程序更新的。
北京网站建设公司

java

2010/01/17

Java的(PO,VO,TO,BO,DAO,POJO)解释

Tags:

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

2010/01/16

Java之父称PHP,Ruby以及C#,不足为惧

Tags: , ,

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被叫停

Tags: ,

自从上次的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 发布

Tags:

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

Tags: ,

Java 6 Update 18 现在可以下载了。本版本的主要特点之一是对Windows 7的支持;还有bug的修复,性能的提升,JavaDB的更新,还包含最新办的Java的性能分析工具和VisualVM。

下载:http://java.sun.com/javase/downloads/widget/jdk6.jsp

JavaDB更新到了10.5.3版本:

  • SQL Roles
  • Generated Columns
  • LOB Improvements
  • Replication of encrypted databases
  • OFFSET/FETCH FIRST syntax
  • In-memory back end
  • Better updating of optimizer statistics
  • Service-tag aware installers
  • 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兼容性测试

    Tags:

    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

    2009/11/12

    Php与java结合解析xml

    Tags: , ,

    首先如果你对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

    2009/10/21

    php&java的简单使用

    Tags: , ,

    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文件:
    1. <?php
    2. ?$system = new Java("java.lang.System");
    3. print "Java version=".?$system->getProperty("java.version")." <br>\n";
    4. print "Java vendor=".?$system->getProperty("java.vendor")." <p>\n\n";
    5. print "OS=".?$system->getProperty("os.name")." ".
    6. ?$system->getProperty("os.version")." on ".
    7. ?$system->getProperty("os.arch")." <br>\n";
    8. ?$formatter = new Java("java.text.SimpleDateFormat","EEEE,
    9. MMMM dd, yyyy 'at' h:mm:ss a zzzz");
    10. print ?$formatter->format(new Java("java.util.Date"))."\n";
    11. ?>
    如果你正确安装了,你将会看到以下信息:
    
    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文件,内容如下:
    1. <?php
    2. ?$myj = new Java("phptest");
    3. echo "Test Results are <b>" . ?$myj->test("Hello World") . "</b>";
    4. ?$myj->foo = "A String Value";
    5. echo "You have set foo to <b>" . ?$myj->foo . "</b><br>n";
    6. echo "My java method reports: <b>" . ?$myj->whatisfoo() . "</b><br>n";
    7. ?>
    如果你得到这样的警告信息:java.lang.ClassNotFoundException error ,这就意味着你的phptest.class文件不在你的java.class.path目录下。
    注意的是JAVA是一种强制类型语言,而PHP不是,这样我们在将它们融合时,容易导致错误,于是我们在向JAVA传递变量时,要正确指定好变量的类型。如:?$myj->foo = (string) 12345678; or ?$myj->foo = "12345678";
    
    这只是一个很小的例子,你可以创建你自己的JAVA类,并使用PHP很好的调用它!