Java应用级产品开发平台APDPlat作者杨尚川专访
APDPlat是Application Product Development Platform的縮寫,即應用級產(chǎn)品開發(fā)平臺,可以幫助你快速開發(fā)基于B/S多層架構(gòu)的信息管理系統(tǒng)。而對于Java初級開發(fā)者,也能從APDPlat中學到眾多的架構(gòu)設(shè)計原則及編碼技巧。
項目官網(wǎng):http://apdplat.org/
在線Demo:http://apdplat.net/(用戶:admin? 密碼:admin)
?
?
為了使大家對APDPlat有進一步的了解,本期我們采訪了APDPlat的作者楊尚川。
?
歡迎大家推薦更多開源項目給我們,支持中國的開源項目發(fā)展,如果您和您的團隊希望展示創(chuàng)業(yè)理念和有趣之處,或者有朋友正在創(chuàng)造這樣的價值,請聯(lián)系我們,發(fā)信到blog@csdn.com即可。
?
先來個自我介紹吧!
?
我叫楊尚川,從2005開始就一直從事Java開發(fā)。2010年開始NUTCH相關(guān)框架的研究,目前為獨立咨詢顧問,專注于大數(shù)據(jù)、搜索引擎等相關(guān)技術(shù)。
?
?
APDPlat是什么?有哪些功能?
?
APDPlat是Application Product Development Platform的縮寫,意為應用級產(chǎn)品開發(fā)平臺。
作為應用級產(chǎn)品的開發(fā)平臺,APDPlat提供了應用容器、多模塊架構(gòu)、代碼生成、安裝程序、認證授權(quán)、備份恢復、數(shù)據(jù)字典、web service、系統(tǒng)監(jiān)控、操作審計、統(tǒng)計圖表、機器綁定、防止破解、數(shù)據(jù)安全、內(nèi)置搜索、數(shù)據(jù)轉(zhuǎn)換、maven支持、WEB組件、內(nèi)容管理等功能。
開發(fā)這個項目的初衷是什么?為什么會選擇開源?
?
2008年我發(fā)起這個項目,最初的目的是為了方便自己做項目,之后一直持續(xù)重構(gòu),持續(xù)改進,特別是對簡潔的追求。目前APDPlat只有不到一萬五千行Java代碼,其中還有很多代碼是工具類或是為擴展做準備的代碼。
2010年以后,我主要從事NUTCH相關(guān)的研發(fā)工作,而且APDPlat已經(jīng)相對成熟,所以2012年我選擇將APDPlat在GitHub上面開源,希望能吸引更多的開發(fā)者,注入新鮮的血液,同時也希望以碼會友,共同交流。
?
APDPlat的實現(xiàn)原理是什么?采用了哪些技術(shù)和框架?
?
APDPlat底層幾乎全部采用Java開源框架,對Spring、Struts2、Compass做了定制修改,接管了系統(tǒng)啟動和關(guān)閉的控制權(quán),統(tǒng)一了配置文件,并實現(xiàn)了諸多平臺級的功能,為應用級產(chǎn)品開發(fā)鋪平了道路。
對于一個平臺來說,講究成熟穩(wěn)定,功能豐富,因此需要眾多的框架來支持,而不是去重新發(fā)明輪子。APDPlat用到的開源框架主要有:
- Web前端采用EXT JS
- 前端控制器采用Struts2
- IOC容器采用Spring
- ORM采用JPA,默認實現(xiàn)是Hibernate
- 內(nèi)置搜索采用Compass,擴展方案采用Solr
- 認證授權(quán)采用SpringSecurity
- 代碼生成采用Freemarker
- 日志組件采用SLF4J
- 調(diào)度組件采用Quartz
- 驗證碼采用Jcaptcha
- Web Service采用CXF
- SQL監(jiān)控采用P6SPY
- JS和CSS壓縮采用YUI Compressor
- JAVA代碼混淆采用Allatori
- 獲取系統(tǒng)信息采用Sigar
- 單元測試采用JUnit
- 配置文件加密采用Jasypt
- 緩存采用EhCache或是Memcached
- 數(shù)據(jù)庫連接池采用CommonsDBCP
- Office文檔操作采用POI
APDPlat的目標用戶及定位是什么?
?
APDPlat的目標用戶是廣大的Java工程師。
因為APDPlat是基于眾多Java開源框架的,所以沒有扎實的Java功底是駕馭不了的。對于Java的入門者或是初級工程師來說,可以把APDPlat當成一個案例來學習。只有熟練掌握Java技能的工程師才能使用APDPlat做到“快速開發(fā)”。
APDPlat并沒有提供可視化的建模環(huán)境,所以它不是“針對業(yè)務人員的快速開發(fā)平臺”。
?
與同類型的開發(fā)平臺相比,你認為APDPlat的優(yōu)勢或特色是什么?
?
對于同類型的開發(fā)平臺,我所知甚少,很難比較。
在我看來,APDPlat開箱即用,默認提供的功能不需修改立即可用,尤其適合研發(fā)能力相對薄弱的微小企業(yè)以及工作室。
?
APDPlat的性能如何?
?
混淆優(yōu)化JAVA代碼,并使用“懶加載”以及“緩存”技術(shù),Java代碼的性能表現(xiàn)優(yōu)異。
壓縮優(yōu)化CSS和JS,并啟用HTTP、GZIP以及瀏覽器緩存,Web前端的性能也表現(xiàn)優(yōu)異。
?
有沒有統(tǒng)計目前采用APDPlat平臺開發(fā)的應用有多少?有哪些典型應用?
?
在GitHub開源后,目前APDPlat已經(jīng)被Fork了170多次,至于用戶開發(fā)了哪些應用,我還沒有得到反饋。就我自己來說,典型應用主要是B/S架構(gòu)的管理信息系統(tǒng)。
?
如何基于APDPlat快速開發(fā)?
?
要想基于APDPlat實現(xiàn)快速開發(fā),需要閱讀APDPlat? Wiki,并有兩個前提:
一是需要對JPA有深入的理解
二是需要對EXT JS有深入的理解。
?
目前APDPlat的開發(fā)團隊有幾個人?如何參與貢獻?
?
APDPlat正在招募開發(fā)隊員,目前的開發(fā)主要是我一個人。
在GitHub上面Fork APDPlat,增加功能或是BUG修復之后,使用GitHub的Pull Request可參與貢獻。
?
APDPlat的開源協(xié)議是什么?你對開源怎么理解?你如何看待國內(nèi)的開源環(huán)境?
?
APDPlat采用Apache License Version 2.0作為開源協(xié)議。
開源的項目更讓人放心,因為它公開、透明、安全、可控。參與開源項目需要持續(xù)地投入時間與精力,要有奉獻與協(xié)作精神。
目前國內(nèi)具有開源精神的人還不是很多,大家對如何使用開源項目很熱衷,而參與開發(fā)的就少了。
?
APDPlat的未來發(fā)展計劃?
?
APDPlat將來要加入工作流、Android客戶端、安裝程序、完善現(xiàn)有的功能、BUG修復。
?
另外,你還推出了一套Nutch相關(guān)框架視頻教程,你對想學習Nutch的同學有什么建議?
?
《Nutch相關(guān)框架視頻教程》是一系列的視頻教程,詳細講解了跟Nutch相關(guān)的框架,這些框架主要有Lucene、Hadoop、Solr、Tika、Gora、HBase等,其中Nutch是網(wǎng)絡(luò)爬蟲、Lucene是全文檢索工具包、Hadoop是分布式存儲與計算、Solr是搜索服務器、Tika是內(nèi)容分析工具包、Gora是ORM的大數(shù)據(jù)版、HBase是基于Hadoop的分布式數(shù)據(jù)庫,都是Java開源框架。
作為一個Java工程師,這些技術(shù)我相信大家都有所耳聞,尤其是Lucene,幾乎可以應用到帶有搜索功能的所有項目中。Solr基于Lucene,提供了更多的企業(yè)級特性。Tika可以從各種不同的文檔中提取元數(shù)據(jù)和結(jié)構(gòu)化文本內(nèi)容。Nutch從一開始的搜索引擎演變?yōu)槿缃竦木W(wǎng)絡(luò)爬蟲,在進化過程中,產(chǎn)生了Hadoop、Tika和Gora三個項目,如今這三個項目都發(fā)展迅速,極其火爆,尤其是Hadoop,其已成為大數(shù)據(jù)和云計算的代名詞。
我希望這套視頻能對學習的同學起到拋磚引玉的作用,激發(fā)大家學習大數(shù)據(jù)、搜索引擎的熱情。
?
總結(jié)
以上是生活随笔為你收集整理的Java应用级产品开发平台APDPlat作者杨尚川专访的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phonegap jQuerymobil
- 下一篇: VSCode常用快捷键(放大/缩小字体、