sourceforge http://www.sourceforge.net
java.net http://www.java.net
Lomboz http://www.objectlearn.com/index.jsp (J2EE plugin for Eclipse)
htmlArea http://sourceforge.net/projects/itools-htmlarea/ (所見(jiàn)即所得的在線(xiàn)HTML編輯器)
XmlBuddy http://www.xmlbuddy.com/ (XML Editor plugin for Eclipse)
JFreeChart http://www.jfree.org/ (用于生成圖表的項(xiàng)目)
EclipseME http://eclipseme.sourceforge.net/ (J2ME Developmnt Plugin for Eclipse)
mvnForum http://sourceforge.net/projects/mvnforum/ (論壇)
jChatBox http://www.javazoom.net/index.shtml (用servlet實(shí)現(xiàn)的WEB聊天引擎)
POI http://jakarta.apache.org/poi/index.html (用于處理Excel,WORD等文檔的項(xiàng)目)
FileUpload http://jakarta.apache.org/commons/fileupload/ (用于處理HTTP文件上傳得項(xiàng)目)
PDFBox http://sourceforge.net/projects/pdfbox/ (處理PDF文檔的項(xiàng)目)
Lucene http://jakarta.apache.org/lucene/index.html (搜索引擎)
Digester http://jakarta.apache.org/commons/digester/ (處理XML信息的項(xiàng)目)
DBCP http://jakarta.apache.org/commons/dbcp/ (數(shù)據(jù)庫(kù)連接池)
AXIS http://ws.apache.org/axis/ (WebService 的實(shí)現(xiàn)框架)
Jetspeed http://portals.apache.org/jetspeed-1/ (Portal)
HSQLDB http://sourceforge.net/projects/hsqldb/ (Im memory Database Engine)
CEWOLF http://sourceforge.net/projects/cewolf/ (一套標(biāo)簽庫(kù)實(shí)現(xiàn)Web報(bào)表,使用的是jFreeChart引擎)
Struts Menu http://sourceforge.net/projects/struts-menu/ (基于Struts的Web菜單項(xiàng)目)
htmlparser http://sourceforge.net/projects/htmlparser/ (用于解析HTML信息的項(xiàng)目)
Mondrian http://sourceforge.net/projects/mondrian/(Open Source OLAP Database)
ProGuard http://sourceforge.net/projects/proguard/(Java的混淆器)
InfoGlue http://sourceforge.net/projects/infoglue/ (J2EE 內(nèi)容管理系統(tǒng))
JPivot http://sourceforge.net/projects/jpivot/ (基于WEB的OLAP 展現(xiàn))
http://java-source.net/
高效率開(kāi)發(fā)、易用、功能穩(wěn)定、執(zhí)行效率高、維護(hù)成本低、需求變更是軟件開(kāi)發(fā)遵循的守則,然而現(xiàn)實(shí)中我們面臨各種各樣的問(wèn)題:
1. 程序員A,程序員B開(kāi)發(fā)同樣的功能,理解不同、開(kāi)發(fā)用時(shí)、及開(kāi)發(fā)質(zhì)量良莠不齊,延遲交付時(shí)間普遍。相反監(jiān)督者需要花費(fèi)更多精力與時(shí)間可以彌補(bǔ),加大投入成本。
2. 后期維護(hù)成本高,如由于測(cè)試跟不上BUG檢測(cè)不到、需求變更等。
3. 同行競(jìng)爭(zhēng)的壓力,如A公司開(kāi)發(fā)模塊實(shí)際時(shí)間10工作日、B公司開(kāi)發(fā)模塊實(shí)際時(shí)間15工作日,競(jìng)標(biāo)會(huì)處于劣勢(shì)。
4. 隨著公司業(yè)務(wù)擴(kuò)展,項(xiàng)目繁多,招攬人員越多、管理難度越大等因素日漸凸顯,造成企業(yè)發(fā)展的瓶頸。
5. 人員的培養(yǎng)需要大量成本,與人員的不穩(wěn)定性因素對(duì)企業(yè)造成損失較大,如人員請(qǐng)假、離職等。
6. 開(kāi)發(fā)—測(cè)試—QA—用戶(hù)測(cè)試—試運(yùn)營(yíng)—運(yùn)營(yíng),是軟件開(kāi)發(fā)中耗費(fèi)成本巨大的一個(gè)循環(huán)過(guò)程鏈,制約企業(yè)發(fā)展。
上述是據(jù)個(gè)人經(jīng)驗(yàn)總結(jié),Db2view是針對(duì)上述問(wèn)題的一個(gè)解決方案。
Db2view是以高效、穩(wěn)定、易用、低成本維護(hù)為目的所研制的一套輕量級(jí)非入侵式、自動(dòng)化開(kāi)發(fā)平臺(tái)。兼容多種架構(gòu),如SSH、struts—spring—ibatis等容易集成到系統(tǒng),根據(jù)多年的行業(yè)經(jīng)驗(yàn),高效的針對(duì)各行業(yè)業(yè)務(wù)特點(diǎn),最大化減少建設(shè)與維護(hù)成本。目前已在多個(gè)項(xiàng)目實(shí)施,不斷完善。
2.1 Db2view總體架構(gòu)圖
Db2view:根據(jù)編寫(xiě)的SQL,在所有元素?fù)?jù)中,勾選需要顯示的元素?fù)?jù)列,即可生成自定義顯示列表。
如select school_id,school_name,school_code, school_manager from school
然后在配置界面勾選school_name, school_manager字段,則顯示的列表為:
school_name |
school_manager |
廣東廣雅中學(xué) |
黃光裕 |
廣州先烈東小學(xué) |
王興東 |
查詢(xún):在SQL里涉及并且勾選的元素?fù)?jù)字段中,可以選擇是否作為查詢(xún)的字段,勾選后該列成為查詢(xún)項(xiàng),如果是時(shí)間字段還可以進(jìn)行時(shí)間區(qū)間查詢(xún)的選擇。
排序:列表中的每個(gè)字段都可以進(jìn)行升序與降序的排列功能。
自定義字段名:對(duì)每個(gè)列名稱(chēng)進(jìn)行界面配置,如勾選school_name、school_manager字段,可以對(duì)school_name定義顯示列名為:學(xué)校名稱(chēng)、school_manager顯示列名為:學(xué)校管理員,修改后列表顯示如下:
學(xué)校名稱(chēng) |
學(xué)校管理員 |
廣東廣雅中學(xué) |
黃光裕 |
廣州先烈東小學(xué) |
王興東 |
轉(zhuǎn)義詞:數(shù)據(jù)庫(kù)中記錄男女使用0,1表示,而界面需要顯示為男女文字的信息,使用轉(zhuǎn)義詞可以達(dá)到效果。
刪除:界面化配置是否需要?jiǎng)h除功能,刪除指定字段的表記錄。
操作:所有列表均可以添加外部操作(如增加、批量刪除)與行內(nèi)操作(編輯、刪除),由此構(gòu)成一個(gè)完整的業(yè)務(wù)功能。(示例見(jiàn)演示視頻)
數(shù)據(jù)導(dǎo)出:界面化配置是否需要excel數(shù)據(jù)導(dǎo)出功能,根據(jù)查詢(xún)的條件顯示的數(shù)據(jù),可選擇導(dǎo)出當(dāng)前所見(jiàn)數(shù)據(jù)與所有滿(mǎn)足條件的數(shù)據(jù)兩個(gè)選擇。
模板定制:界面化配置模板,方便為不同的客戶(hù)需求定制不同的顯示模板。
換膚:界面化配置皮膚,每個(gè)模板依據(jù)規(guī)范可以有不同的皮膚更換功能。
數(shù)據(jù)安全:加入訪(fǎng)問(wèn)權(quán)限控制規(guī)則,保障功能數(shù)據(jù)安全性。(待實(shí)現(xiàn))
3.1 優(yōu)點(diǎn)
(1)高效率開(kāi)發(fā):db2view平臺(tái)開(kāi)發(fā)工具采用全界面配置,編寫(xiě)業(yè)務(wù)SQL,簡(jiǎn)單配置,即可完成。列表功能開(kāi)發(fā)以分鐘計(jì)時(shí),15分鐘可以完成一個(gè)高質(zhì)量列表的功能開(kāi)發(fā)。
(2)易用性:界面編寫(xiě)SQL,然后配置即可得到一個(gè)界面友好,高質(zhì)量的功能列表。將傳統(tǒng)程序員需要熟悉各種復(fù)雜的技術(shù)框架解放出來(lái),專(zhuān)注于業(yè)務(wù)邏輯,大大降低企業(yè)由于人員離職或其他情況所帶來(lái)的損失。
(3)功能穩(wěn)定:所有功能使用統(tǒng)一內(nèi)核,經(jīng)過(guò)多個(gè)項(xiàng)目的迭代驗(yàn)證其穩(wěn)定性、可靠性。
(4)低成本維護(hù): 所有的功能需要維護(hù)的只有業(yè)務(wù)SQL與配置文件,最大化的減少維護(hù)的成本。
比較現(xiàn)今流行的SSH架構(gòu)開(kāi)發(fā)流程:
維護(hù)成本是流程涉及的內(nèi)容,成本花費(fèi)高。
Db2view開(kāi)發(fā)流程:
維護(hù)成本只有業(yè)務(wù)SQL與配置文件,易于維護(hù)。
(5)快速響應(yīng)需求變更:如業(yè)務(wù)更改字段名、添加或刪除顯示字段、
添加查詢(xún)字段、功能刪除等維護(hù)工作都能夠在極短的時(shí)間內(nèi)響應(yīng)。
(6)無(wú)需重啟服務(wù)器:功能的生成與修改實(shí)時(shí)生效,無(wú)需重啟服務(wù)器。
3.2 缺點(diǎn)
(1) 平臺(tái)仍需完善,暫不能夠滿(mǎn)足所有業(yè)務(wù)需求界面化
(2) 平臺(tái)操作友好性仍待提高,如轉(zhuǎn)義詞的添加、新添加配置等
數(shù)據(jù)庫(kù):ORACLE 10G以上版本
語(yǔ)言:JAVA
JDK版本:1.4以上
服務(wù)器:Tomcat,JBoss,Resin,WebSphere,WebLogic等主流服務(wù)器。
根據(jù)開(kāi)發(fā)模式分為兩種部署方式。
面向服務(wù)式模式:
作為分布式服務(wù)器對(duì)外提供服務(wù),生成功能鏈接嵌入應(yīng)用系統(tǒng)。該模式的優(yōu)點(diǎn):
1. 對(duì)應(yīng)用系統(tǒng)完全無(wú)入侵,100%輕量級(jí)開(kāi)發(fā)。
2. 產(chǎn)品升級(jí)調(diào)試簡(jiǎn)單。
缺點(diǎn):
1. 需要開(kāi)放應(yīng)用的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)權(quán)限。
2. 涉及操作并有關(guān)聯(lián)動(dòng)作:如刪除功能在A(yíng)系統(tǒng)開(kāi)發(fā),B系統(tǒng)是Db2view,關(guān)聯(lián)頁(yè)面需要設(shè)置同域方能進(jìn)行交互。
3. 安全性相對(duì)另一種模式低。
組件模式:
作為組件集成到開(kāi)發(fā)項(xiàng)目中,容易管理,安全性也高。
優(yōu)點(diǎn):
安全性高,可根據(jù)開(kāi)發(fā)系統(tǒng)的權(quán)限要求做安全性控制
缺點(diǎn):
升級(jí)調(diào)試相對(duì)復(fù)雜。
5分鐘生成功能例子,對(duì)此工具有興趣者請(qǐng)加群:12990321.
現(xiàn)象一:
錯(cuò)誤信息:
java.lang.SecurityException: sealing violation: can't seal package oracle.jdbc.driver: already loaded
原因:
was啟動(dòng)的lib里存在多個(gè)ORACLE DRIVER。
解決:
保留最新的一個(gè)驅(qū)動(dòng)包解決。
遺留問(wèn)題:
開(kāi)發(fā)環(huán)境使用TOMCAT發(fā)布無(wú)此問(wèn)題,JBUILDER2006開(kāi)發(fā)中包是有優(yōu)先順序的,即使存在多個(gè)
相同的類(lèi),優(yōu)先選擇第一個(gè)找到的類(lèi)。WAS在這方面顯然存在不足,排異容錯(cuò)性不夠強(qiáng)大。
現(xiàn)象二:
錯(cuò)誤信息:
Error 500: LinkageError while defining class: com.gzedu.eecn.structure.login.action.UserLoginAction Could not be defined due to: com/gzedu/eecn/structure/login/action/UserLoginAction (Illegal constant pool type) This is often caused by having a class defined at multiple locations within the classloader hierarchy. Other potential causes include compiling against an older or newer version of the class that has an incompatible method signature. Dumping the current context classloader
原因:
上傳的文件已經(jīng)損壞。重復(fù)試過(guò)很多次,發(fā)現(xiàn)本機(jī)器通過(guò)SSH上傳過(guò)程中文件已經(jīng)損壞。
屬于本機(jī)問(wèn)題。
解決:
通過(guò)同事的機(jī)器上傳文件解決
總結(jié):
類(lèi)似此問(wèn)題出現(xiàn)的幾率很小,可以認(rèn)為是相同的環(huán)境,使用相同的方式做一件事情也有可能出現(xiàn)
不同的效果。再次出現(xiàn)類(lèi)似問(wèn)題可以更快的定位錯(cuò)誤點(diǎn)。
現(xiàn)象三:
錯(cuò)誤信息:
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0227E: 轉(zhuǎn)換 /login.jsp:
/login.jsp(1,1) --> JSPG0145E: 未知 JSP 元素:jsp:directive.pagelanguage
原因:
windows環(huán)境、tomcat作為服務(wù)器開(kāi)發(fā),部署到sit、unix環(huán)境,會(huì)出現(xiàn)頁(yè)面不同的開(kāi)發(fā)環(huán)境會(huì)
有中文問(wèn)題,或是說(shuō)重復(fù)定義encoding的問(wèn)題頁(yè)面編碼問(wèn)題。
解決:
按照如下進(jìn)行修改和配置;
1. 對(duì)于不是被include的頁(yè)面必須使用;
<%@ page contentType="text/html;charset=GBK" pageEncoding="GBK" language="java" %>
。 大寫(xiě)GBK
2. 對(duì)于被Include的頁(yè)面必須使用如下;
。<%@ page pageEncoding="GBK" language="java" %>
注:在TOMCAT4.1.30-->was5.0,6.0出現(xiàn)此問(wèn)題
參與一個(gè)項(xiàng)目要做到:
1.項(xiàng)目中有你參與整個(gè)項(xiàng)目進(jìn)展會(huì)順利的多。體現(xiàn)你的重要性。
2.一個(gè)人的能力再?gòu)?qiáng),精力是有限的。切記不可體現(xiàn)個(gè)人主義,充分發(fā)揮團(tuán)隊(duì)能力,協(xié)調(diào)、配合往往比
技術(shù)重要性排前一個(gè)位置。
3.主動(dòng)承擔(dān)一些責(zé)任,對(duì)團(tuán)隊(duì)可提高士氣融合的氣氛、對(duì)個(gè)人當(dāng)成一個(gè)磨練的機(jī)會(huì)。
4.注意項(xiàng)目中遇到的一些細(xì)小的問(wèn)題。最不起眼的就是最能考驗(yàn)個(gè)人細(xì)心的程度,自己負(fù)責(zé)的事情要做到
最好。
5.同一件事情不同的人處理效果不同。
增加翻頁(yè)接口,滿(mǎn)足各種分頁(yè)不同的界面化顯示。
代碼已經(jīng)開(kāi)發(fā)完,工具需要做小量修改,進(jìn)期主要任務(wù)是編寫(xiě)使用手冊(cè)。
2005年10月16日21:43:36