博文

谈谈的开发与优势(实在原创)  (2006-03-09 22:42:00)

摘要:我是一个开发时间不久的程序员,在北京一家软件公司做电子商务平台的开发,介于自己开发经验不足,只是谈一谈自己对于开发过程中的一些经验和体会,希望各位高手给予指教。
我使用tapestry这个framework也只有短短的两个月时间,但是却深刻的体会到了它独特的魅力以及他给与程序员更大的自由。
tapestry是Apache的一个view层开源framework,对于大多数中国的程序员或者工程师来说,这也许还是一个陌生的东西,但其无限的优越性和巨大的潜力使得它将代替struts成为主流的view层开发framework(纯属个人意见)。
tapestry的设计想法近似于java的oo设计概念,完全不同于struts的,虽然它也是mvc的framework。在struts中,我们最少要写一个jsp页面来对数据进行表现,需要写一个actionForm来对整体的流程进行控制,需要写一个业务逻辑bean来对所传的数据进行业务处理。从jsp的角度来说,我们就是把一段一段的java代码镶嵌进了html页面中,而对于服务器来说,需要翻译jsp页面为一个servlet,在客户使用的时候进行服务。
tapestry的开发流程是这样的:首先,我们要写一个html格式的页面模版,这个页面模版中,我们只需要在必要的位置上增加我们所需要的组件即可,而不需要写一些不必要的流程代码。然后,我们要写一个和页面相同命名的.page页面属性文件,在这个页面中,我们首先要注册我们已经使用的组件,这样,组件才可以在页面中生成,同时,我们还可以在.page文件中注册一系列的属性变量,这些属性变量的数据将随着页面的属性一起传送到下一个页面中。最后,我们要写明一个相关的java类,用来处理从页面中所得到的数据。这样,我们就完成了一个tapestry的开发。
那么,这样开发的好处是什么呢?我们为什么说tapestry比struts更加高级呢?
事实上,tapestry的开发概念就是将一个页面作为一个对象,甚至整个b/s结构中,view层所有的流程、表现、处理都作为对象来传递。这样就完全延续了java的oo概念。tapestry认为,一个页面就是一个页面对象,而这个对象由三个部分组成,第一个就是html模版,也就是页面应该是什么样子的;第二个就是java类,这个java类就是这个页面......

阅读全文(4064) | 评论:0

最好的Java程序员免费学习材料(English)(2006-02-28 07:48:00)

摘要: 最好免费的Training 和Tutorials资源: Java Programming Resources 19 Free Java Courses from IBM Introduction to Programming Using Java -Full TOC  -PDF version Studying for Java Certification on the Web Thinking In Java, by Bruce Eckel, 2nd Edition Richard Baldwin's Java Tutorials, plus Javascript and XML Jyothi Krishnan Java Certification Study Site Java Certification & Training by Michael Thomas Sun Certified Java Programmer (Java 2) Study Guide) (register here) Another Java 2 Programmer Study Guide Further Java, University of Cambridge The Java Boutique: The Ultimate Java Applet Resource: Articles: Tutorials The Developer's Guide to Understanding Enterprise JavaBeans Applications (pdf) Mastering_Enterprise_JavaBeans and the Java 2 Platform (zipped pdf) Java Bean Tutorial from Sun A Walking Tour of JavaBeans Advanced JavaBeans Java Servlet Articles from Webreview.com Java Servlet Tutorial from Webmonkey S......

阅读全文(6808) | 评论:0

Java基本功----Reference(2006-02-25 16:52:00)

摘要: 这是一篇一年多之前便已写就的文章,那时,因为很多Java程序员只求追随新生的事物,却连基本的概念都没有,很多讨论中,很明显是基本功不过硬,于是萌生写一个系列文章,讨论Java的基本功,下面便是在这个想法下催生出的第一篇文章。可事实上,真正完成的也只有这一篇。因为未能及时发布,它就被我遗忘在硬盘的角落中。今天,JavaEye上关于Java传值还是传引用的论战让我记起了自己曾经写过的这篇文章,愿与大家共享。  
Java基本功——Reference     有这样一种说法,如今争锋于IT战场的两大势力,MS一族偏重于底层实现,Java一族偏重于系统架构。说法根据无从考证,但从两大势力各自的社区力量和图书市场已有佳作不难看出,此说法不虚。于是,事情的另一面让人忽略了。 偏巧,我是一个喜欢探究底层实现的Java程序员,虽然我的喜好并非纯正咖啡,剑走偏锋却别是一番风味。   这是一篇一年多之前便已写就的文章,那时,因为很多Java程序员只求追随新生的事物,却连基本的概念都没有,很多讨论中,很明显是基本功不过硬,于是萌生写一个系列文章,讨论Java的基本功,下面便是在这个想法下催生出的第一篇文章。可事实上,真正完成的也只有这一篇。因为未能及时发布,它就被我遗忘在硬盘的角落中。今天,JavaEye上关于Java传值还是传引用的论战让我记起了自己曾经写过的这篇文章,愿与大家共享。 Java基本功——Reference 有这样一种说法,如今争锋于IT战场的两大势力,MS一族偏重于底层实现,Java一族偏重于系统架构。说法根据无从考证,但从两大势力各自的社区力量和图书市场已有佳作不难看出,此说法不虚。于是,事情的另一面让人忽略了。
偏巧,我是一个喜欢探究底层实现的Java程序员,虽然我的喜好并非纯正咖啡,剑走偏锋却别是一番风味。 Reference
Java世界泰山北斗级大作《Thinking In Java》切入Java就提出“Everything is Object”。在Java这个充满Object的世界中,reference是一切谜题的根源,所有的故事都是从这里开始的。 Reference是什么?
如果你和我一样在进入Java世界之前曾经浪迹于C/C......

阅读全文(3563) | 评论:3

helloworld的常见错误问题(2006-02-25 09:13:00)

摘要:问HelloWorld问题的人实在是太多了,而且经常都以“问一个最简单的问题”开头。其
实回想一下,自己也是从这个阶段过来的,说一句“你好”,真的是一个最简单的问题
吗?...//think 好了,言归正传,let's say "HelloWorld!" in java...
首先,我们要假设一下我们的平台是Windows+JDK(Linux环境下也差不多)。这个环境
是相当普遍、基础和入门的。确定已经正确安装JDK了,下一步是小心翼翼地敲入某本教
程上的HelloWorld源码,存盘,然后编译,javac ...问题来了:
* 错误1:
'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。
(javac: Command not found)
产生的原因是没有设置好环境变量path。Win98下在autoexce.bat中加入path=%path%;c:\jdk1.2\bin,Win2000下则控制面板->系统->高级->环境变量->系统变量...看到了?双击Path,在后面加上c:\jdk1.2\bin。当然我们假设JDK安装在了c:\jdk1.2目录下(有点唐僧了?)...好像还要重启系统才起作用...(//知道了!//西红柿)好,再试试!javac HelloWorld

* 错误2:
HelloWorld is an invalid option or argument.
拜托,给点专业精神,java的源程序是一定要存成.java文件的,而且编译时要写全.java呀。
OK, javac HelloWorld.java (这回总该成了吧?)

* 错误3:
HelloWorld.java:1: Public class helloworld must be defined in a file called
"HelloWorld.java".
public class helloworld{
^
这个问题嘛,是因为你的类的名字与文件的名字不一致。(谁说的,明明看到人家都有这样写的 ;( ) OK,准确地说,一个Java源程序中可以定义多个类,但是,具有pu......

阅读全文(3247) | 评论:2

不希望以后还有关于环境变量的问题——环境变量的设置图解(新手请进)(2006-02-25 07:56:00)

摘要:呵呵  各位学友好~~
在论坛待了半年多了   谢谢各位老鸟的指导使我基本有了JAVA的基础
想想自己刚开始学JAVA的时候 也确实挺辛苦的  在这里感谢《程序爱好者》论坛提供给我们这样的学习交流的机会~~~再次致谢~~~
但是现在在中国JAVA发展还不够成熟,有很多新人刚开始学JAVA的时候都不知道环境变量和当前目录是什么,在这里我代表斑竹兄具体讨论一下环境变量和当前目录的问题,希望对各位新手步入JAVA之门有点帮助~~~~(纯粹摆白的个 )


一、关于环境变量
1、JAVA需要什么样的环境变量,这些环境变量有什么作用?
    JAVA程序能够顺利编译需要两个环境变量,一个是PATH(path),一个是CLASSPATH(classpath)。那么这两个环境变量代表什么呢?或者说究竟在JAVA程序编译中有什么作用呢?这就要涉及到WINDOWS的基本知识了。在WINDOWS环境中,每一条能用的指令都保存在硬盘的“某个角落”,比如说指令NOTEPAD(WINDOWS的记事本指令,在C:\WINNT目录下),那么在DOS命令提示符下直接输入NOTEPAD就可以打开记事本了。但是一旦我们把C:\WINNT目录下的NOTEPAD.EXE这个可执行文件移开(比如说我们现在把它“剪切”到D盘根目录下)我们再在DOS提示符下直接输入NOTEPAD时就无法再打开记事本了,但是我们在DOS下改变路径输入D:\NOTEPAD(或者先输入cd D: 在输入NOTEPAD也行)就可以打开记事本了。这就是说在我们直接输入NOTEPAD的时候,其实其默认路径就是C:\WINN。假设我们要运行一个JAVA程序(hello.java)就要先把它的class文件移动到JAVA里的bin目录下  然后打开DOS,把路径改到JAVA的BIN目录下 执行java hello.class,一次无所谓 但是每次都要这样去做未免太麻烦。还好WINDOWS提供了一个PATH环境变量,他的作用就是现在这个变量的值路径中去找,如果找到了要运行的EXE就运行,否则失败。如果我们把JAVA里的bin目录这个路径赋给path那么下次我在运行ja......

阅读全文(11145) | 评论:4

Java 虚拟机类装载:原理、实现与应用(2006-02-23 15:44:00)

摘要: 一、引言     Java虚拟机(JVM)的类装载就是指将包含在类文件中的字节码装载到JVM中, 并使其成为JVM一部分的过程。JVM的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块, 而不影响系统其他功能模块的正常运行。本文将分析JVM中的类装载系统,探讨JVM中类装载的原理、实现以及应用。 二、Java虚拟机的类装载实现与应用

2.1  装载过程简介        所谓装载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这个类或是这个接口的class对象的过程,其中类或接口的名称是给定了的。当然名称也可以通过计算得到,但是更常见的是通过搜索源代码经过编译器编译后所得到的二进制形式来构造。         在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下: 装载:查找和导入类或接口的二进制数据; 链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的; 校验:检查导入类或接口的二进制数据的正确性; 准备:给类的静态变量分配并初始化存储空间; 解析:将符号引用转成直接引用; 初始化:激活类的静态变量的初始化Java代码和静态Java代码块。 至于在类装载和虚拟机启动的过程中的具体细节和可能会抛出的错误,请参看《Java虚拟机规范》以及《深入Java虚拟机》,它们在网络上面的资源地址是: http://java.sun.com/docs/books/vmspec/2nd-edition/html/Preface.doc.html 和 http://www.artima.com/insidejvm/ed2/index.html。 由于本文的讨论重点不在此就不再多叙述。 2.2  装载的实现 JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoade......

阅读全文(2654) | 评论:0

Java堆的管理--垃圾回收(2006-02-23 15:34:00)

摘要: 1 引言 
      Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的堆。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。 
2 垃圾收集的意义 
        在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾收集也可以清除内存记录碎片。     由于创建对象和垃圾收集器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端,JVM将整理出的内存分配给新的对象。 

     垃圾收集能自动释放内存空间,减轻编程的负担。这使Java 虚拟机具有一些优点。首先,它能使编程效率提高。在没有垃圾收集机制的时候,可能要花许多时间来解决一个难懂的存储器问题。在用Java语言编程的时候,靠垃圾收集机制可大大缩短时间。其次是它保护程序的完整性, 垃圾收集是Java语言安全性策略的一个重要部份。  垃圾收集的一个潜在的缺点是它的开销影响程序性能。Java虚拟机必须追踪运......

阅读全文(2815) | 评论:0

仔细触摸Java编程中的“文档”和“包”(2006-02-23 07:47:00)

摘要: 什么是包

  Java中的包(Package)其实指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface)。Java语言的包可以被另一个Java开发包所使用。如果我们要引用某个包中的类,用import关键字来标明即可。比如:

  import java.util.

  date=new Date

  

  提示:import java.util.表示java.util中的所有公有类和接口被引入到当前包。这里的匹配符可以调入多个类名。

  常用的Java标准包

  JDK为我们提供了很多标准的Java类和接口,这些包是写Java程序所必需的,知道了每种包所包含的类和接口,并且熟悉这些类和接口是每个Java编程人员都应该掌握的基本技能。

  Java中常用的包有:Java.applet、java.awt、java.i、java.lang、java.net和java.util等等。其中java.applet包含了一些设计小应用程序(Applet)的类和接口;java.awt是一个窗口工具箱包(awtAbstract Window Toolkit),里面是一些GUI界面相关的类;java.io包支持输入输出,比如文件输入流类:FileInputStream等;java.lang包含线程、异常、系统、整数等相关的类,是Java程序中默认加载的一个包;java.net这个类支持TCP/IP网络协议,并包含Socket类及URL相关的类,是网络编程中要使用的;java.util包含一些程序的公用类,如DateDictionary等等。

  除了上面提到的一些标准包之外,还有很多其它的包,比如数据库编程时我们可能需要使用java.sql包,写网络程序还会用到java.rmi包(RMIRemote Method Invocation)等。另外,Javax.包是一些标准包的扩展,常用的包有:javax.swing、javax.sound。

  自己动手创建包

  Java中的包是可以自己创建的。我们可以将很多功能相近的类和接口放在同一个包中,以方便管理和使用。

阅读全文(2910) | 评论:0

人生转折点!!!这是一封对我非常重要的帖子,请有社会经验的前辈们给些建议(2006-02-23 06:59:00)

摘要: 作  者: best_threewood (三木) 等  级: 信 誉 值: 100 所属社区: Java J2SE / 基础类 问题点数: 100 回复次数: 13 发表时间: 2006-2-22 8:37:11 我是一名还有1年就毕业的计算机专业的本科生。从很多渠道了解到现在社会上竞争异常激烈,很多校友和同学毕业后想找一份称心的工作很困难。而我却认为那些同学找工作困难的原因在于他们对自己的专业技术掌握的还不够,无法达到用人单位的标准。所以我就一直很关注招聘单位都需要程序员掌握那些技术。我在大学期间,参加了一次培训学习了java web编程,随后又自学了Struts和hibernate框架,基于这些框架,自己写过一个论坛和一个新闻发布系统,英语方面也通过了CET-6,这就是我现在的个人情况(自知还很不够)。 我毕业后马上工作的想法一直没变过,可是最近学校的老师却都鼓励我们去考研,随后我又从很多渠道得知考验有很多好处。 我真的很犹豫,不知该怎么办才好。我也看了CSDN上的很多关于考研的利弊进行讨论的帖子,但对于我们这些还没有步入社会的学生来说,对社会的趋势和业内的了解还很模糊,也很困惑。所以我想请前辈们给些指点。时下,对于一个应届毕业生来说考研、就业那个是更好的选择或者说那个能够更有助于今后的发展? 十分感谢!这个问题100分确实很少,但还是请前辈们真诚的给些建议,可以根据自己的经历,也可以根据自己对业内的了解,晚辈不胜感激。 mingxuan3000(铭轩) ( ) 信誉:100 2006-2-22 8:41:44 得分: 0   考研后找一份称心的工作也很困难!!!!!! Top mysohu(21世纪最重要的就是我!:)) ( ) 信誉:100 2006-2-22 8:42:14 得分: 0   沙发 Top pigengler(en) ( ) 信誉:......

阅读全文(3381) | 评论:2

一个大专生痛心的决定,何去何从....前面的路要如何去走.... (2006-02-22 22:48:00)

摘要:从我进入计算机专业我就很喜欢这个专业,2004年6月毕业就被深圳一家公司招了过来(职位:老板跟班),工资1150包住,当时也在全心的工作,有多出的时间就用来学java了,不过当时还看不懂什么东东,三个月后工资1200包吃住(职位网管+老板跟班),2005年2月为了个人的发展我带着身上仅有的3000元钱辞职到了一家小的sp公司(职位java程序员),工资2500什么都不包,本以为会有一个好的学习环境,进去才知道就我一个人搞java,省吃俭用9个月工作下来还清了在校时的助学贷款7600元,为了个人的发展2006年2月我辞职了,刚辞职2天我以前的同事给我介绍了份新工作,一个物流公司搞软件开始加我也就二个搞java的,想学点技术也只有自学了,公司很大工资也开得可以3800元,对一个大专生来说可以了,比我以前多出了1300元呀,对我来说真的是很大的一个惊喜!但是我仔细想下,在这个公司工作的话工资还算可以,可是就是学不到什么技术,也做不到什么大的项目。我一直喜欢java技术,我也很想在很短时间内有很大的提高,从在学校读书到现在我一直是自学java,没有人指点,只有从网上找到资料,到网上去问一些问题。进步真的太慢了,有时候一个问题看书可能要看3天才能搞懂,如果别人指点一下可能二分钟就搞定了。曾经都想去参加深圳的一些java培训学校,可是面对那么高的学费,我真的不舍得,况且我也没有钱,我是欠债累累,身上最贵的衣服68元,还得省钱去买那不打折的书。那个物流公司人事部几次打电话来叫我去,我拒绝了,我真的想在技术上面有所发展,我也没有什么大项目的开发经验,为了自己的java梦,为了自己的程序梦,今天又拒绝了这个公司。刚到java群聊了下,感觉他们把做软件说得很恐怖,突然间我感觉有些后悔了,我真的放弃了3800/月的工资,对我来说真的很高了。不知道做java要什么时候才有这样的工资,况且我是个大专生。明天还得继续找工作.....
深圳的工作就这么难找吗?我能找到正式工资有3500的工作吗?如果能找到正式工资有3500元的话我真的不后悔我今天的这个决定。家里需要钱,我也需要钱,但是求知欲让我放弃了眼前....以后会如何,真的不敢去想
真的希望大家给点意见:下面是我的个人简历 精通Dreamware,flash,frontpage等软件.
通java,jsp,servlet......

阅读全文(2420) | 评论:1