Java技术学习之Class文件

Java Class文件是由Java Compiler编译源文件之后产生的。Class文件里保存的就是大名鼎鼎的ByteCode(字节码)。其实在JVM Specification有对它格式的详细描述,我也因此用Python写了一个解析器PyJavap。昨天这个小工具也到了第一个Milestone,支持1.5以前的规范。我心里还是很有成就感的,同时对ByteCode也有了更深了理解,在我的GitHub上可以找到。

现在对Java技术的兴趣越来越深,继续研究吧! 🙂

JBoss+Maven+Cargo开发EJB的Hello World!

Team要使用EJB了,不再使用以前比较山寨的CGI+Google Protocol; 同时构建工具也变成了Maven。这几天做了些实验,想写一个最简单的Hello World。有一个EJB的Service,再有一个Client去使用这个服务。

几天下来有点小崩溃,相对EJB 3的教程来说,配置实在太麻烦,有太多的属性、参数、版本要做了。好在最后取得了成功,记在这里做个小结。

1. 工具的安装

Maven 3

从Apache的网站上下载,然后把${MAVEN_HOME}/bin目录加到系统的PATH下。

JBoss AS

我这里下载的是JBoss AS 7.1.1.Final压缩包。这里的版本非常重要,它和之后开发的其他包有依赖关系。

假设JBoss被解压到${JBOSS_HOME}下。

NOTE: 解压之后一定在JBoss的bin下运行add-user.bat,安装一个管理用户。这个很重要。

2. 写一个EJB的服务

写一个简单EJB服务很简单,我们可以有Maven的archetype生成一个工程的框架。

一路回车之后,就得到了一个Server的工程文件夹结构。但删掉默认生成的App.java和AppTest.java.

然后在org.yli.learn.server中,加入两个类。一个是接口SayHello,一个是EJB Bean类SayHelloBean.

里面用到一些EJB 3的Annonation,大家自己查查书吧。

下一步就是修改pom.xml文件了,这里我们只要加入一些编译的依赖就行。

然后你可以编译安装了。

3. EJB Bean的部署

我选择了Cargo来部署Bean到JBoss里,好像有一个plugin叫jboss-as的,也可以做一样的事情。

我们只要在pom.xml加上:

然后就可以用mvn的goal来部署和运行JBoss了

  • 部署: mvn cargo:deployer-deploy
  • 运行: mvn cargo:run或cargo:start

好了,这样我们写好的EJB就部署到了JBoss的容器中。

4. EJB的Client

这部分的配置有点让我的崩溃,花的时间也最多。

基本步骤也是先用maven建立一个框架,比如我们的工程是org.yli.learn:client:jar:1.0, 包名是org.yli.learn.client.

我们在包里有一个Client,它会去向JBoss获取service并使用。

POM文件里有相关的依赖

然后你可以用mvn clean package来编译打包了。

很重要的一点,就是要添加一个properties文件。在src/main下面,建立一个resources的文件夹,然后在里面新建文件jboss-ejb-client.properties. 我这里使用的是一些默认的选项,具体文档在JBoss的Confluence里有介绍。

好了,可以用mvn exec:exec来运行了!

你可以顺利看到Hello, Jason!

真太不容易了!但现在的感觉很爽啊! 😀

 

关于Perl语言基本知识的学习总结

老大走了,同时留了大约7,8千行的Perl脚本给我们维护。以前Perl没学过,这两天大概看了一下,现在做下简单的总结。

总的感觉是:Perl语言真的很简洁!

变量

Perl的变量类型分成了几种:标量类型,数组类型,联合类型(理解成Map比较好)。

比如:

NOTE:其实还有引用类型,只是现在还没有用到,先不总结了。

流程控制

这个部分和其他语言很像,但有些地方会再简洁,Larry果然真的确实”很懒”。

条件控制

循环控制

和C很像,就是有的地方别忘了加上$, 如:

函数

基本语法

包(Package)

package定义一个包,如:

最后的”1;”非常重要,不然别的脚本就无法使用这个包。Perl里的True/False很像Python里定义的。

那如何使用呢,也很简单。

有几个小问题:

  1. 包的搜索路径在@INC中,如有需要,要在开始加

总结

这些就是Perl的基本内容,再把正则表达式看一下就可以开始读代码的了。