1. 程式人生 > >Java應用級產品開發平臺APDPlat作者楊尚川專訪

Java應用級產品開發平臺APDPlat作者楊尚川專訪

APDPlat是Application Product Development Platform的縮寫,即應用級產品開發平臺,可以幫助你快速開發基於B/S多層架構的資訊管理系統。而對於Java初級開發者,也能從APDPlat中學到眾多的架構設計原則及編碼技巧。

為了使大家對APDPlat有進一步的瞭解,本期我們採訪了APDPlat的作者楊尚川

歡迎大家推薦更多開源專案給我們,支援中國的開源專案發展,如果您和您的團隊希望展示創業理念和有趣之處,或者有朋友正在創造這樣的價值,請聯絡我們,發信到[email protected]即可。

先來個自我介紹吧!

我叫楊尚川,從2005開始就一直從事Java開發。2010年開始NUTCH相關框架的研究,目前為獨立諮詢顧問,專注於大資料、搜尋引擎等相關技術。

APDPlat是什麼?有哪些功能?

APDPlat是Application Product Development Platform的縮寫,意為應用級產品開發平臺。

作為應用級產品的開發平臺,APDPlat提供了應用容器、多模組架構、程式碼生成、安裝程式、認證授權、備份恢復、資料字典、web service、系統監控、操作審計、統計圖表、機器繫結、防止破解、資料安全、內建搜尋、資料轉換、maven支援、WEB元件、內容管理等功能。


開發這個專案的初衷是什麼?為什麼會選擇開源?

2008年我發起這個專案,最初的目的是為了方便自己做專案,之後一直持續重構,持續改進,特別是對簡潔的追求。目前APDPlat只有不到一萬五千行Java程式碼,其中還有很多程式碼是工具類或是為擴充套件做準備的程式碼。

2010年以後,我主要從事NUTCH相關的研發工作,而且APDPlat已經相對成熟,所以2012年我選擇將APDPlat在GitHub上面開源,希望能吸引更多的開發者,注入新鮮的血液,同時也希望以碼會友,共同交流。

APDPlat的實現原理是什麼?採用了哪些技術和框架?

APDPlat底層幾乎全部採用Java開源框架,對Spring、Struts2、Compass做了定製修改,接管了系統啟動和關閉的控制權,統一了配置檔案,並實現了諸多平臺級的功能,為應用級產品開發鋪平了道路。

對於一個平臺來說,講究成熟穩定,功能豐富,因此需要眾多的框架來支援,而不是去重新發明輪子。APDPlat用到的開源框架主要有:

  • Web前端採用EXT JS
  • 前端控制器採用Struts2
  • IOC容器採用Spring
  • ORM採用JPA,預設實現是Hibernate
  • 內建搜尋採用Compass,擴充套件方案採用Solr
  • 認證授權採用SpringSecurity
  • 程式碼生成採用Freemarker
  • 日誌元件採用SLF4J
  • 排程元件採用Quartz
  • 驗證碼採用Jcaptcha
  • Web Service採用CXF
  • SQL監控採用P6SPY
  • JS和CSS壓縮採用YUI Compressor
  • JAVA程式碼混淆採用Allatori
  • 獲取系統資訊採用Sigar
  • 單元測試採用JUnit
  • 配置檔案加密採用Jasypt
  • 快取採用EhCache或是Memcached
  • 資料庫連線池採用CommonsDBCP
  • Office文件操作採用POI

APDPlat的目標使用者及定位是什麼?

APDPlat的目標使用者是廣大的Java工程師。

因為APDPlat是基於眾多Java開源框架的,所以沒有紮實的Java功底是駕馭不了的。對於Java的入門者或是初級工程師來說,可以把APDPlat當成一個案例來學習。只有熟練掌握Java技能的工程師才能使用APDPlat做到“快速開發”。

APDPlat並沒有提供視覺化的建模環境,所以它不是“針對業務人員的快速開發平臺”。

與同類型的開發平臺相比,你認為APDPlat的優勢或特色是什麼?

對於同類型的開發平臺,我所知甚少,很難比較。

在我看來,APDPlat開箱即用,預設提供的功能不需修改立即可用,尤其適合研發能力相對薄弱的微小企業以及工作室。

APDPlat的效能如何?

混淆優化JAVA程式碼,並使用“懶載入”以及“快取”技術,Java程式碼的效能表現優異。

壓縮優化CSS和JS,並啟用HTTP、GZIP以及瀏覽器快取,Web前端的效能也表現優異。

有沒有統計目前採用APDPlat平臺開發的應用有多少?有哪些典型應用?

在GitHub開源後,目前APDPlat已經被Fork了170多次,至於使用者開發了哪些應用,我還沒有得到反饋。就我自己來說,典型應用主要是B/S架構的管理資訊系統。

如何基於APDPlat快速開發?

要想基於APDPlat實現快速開發,需要閱讀APDPlat  Wiki,並有兩個前提:

一是需要對JPA有深入的理解
二是需要對EXT JS有深入的理解。

目前APDPlat的開發團隊有幾個人?如何參與貢獻?

APDPlat正在招募開發隊員,目前的開發主要是我一個人。

在GitHub上面Fork APDPlat,增加功能或是BUG修復之後,使用GitHub的Pull Request可參與貢獻。

APDPlat的開源協議是什麼?你對開源怎麼理解?你如何看待國內的開源環境?

APDPlat採用Apache License Version 2.0作為開源協議。

開源的專案更讓人放心,因為它公開、透明、安全、可控。參與開源專案需要持續地投入時間與精力,要有奉獻與協作精神。

目前國內具有開源精神的人還不是很多,大家對如何使用開源專案很熱衷,而參與開發的就少了。

APDPlat的未來發展計劃?

APDPlat將來要加入工作流、Android客戶端、安裝程式、完善現有的功能、BUG修復。

另外,你還推出了一套Nutch相關框架視訊教程,你對想學習Nutch的同學有什麼建議?

《Nutch相關框架視訊教程》是一系列的視訊教程,詳細講解了跟Nutch相關的框架,這些框架主要有Lucene、Hadoop、Solr、Tika、Gora、HBase等,其中Nutch是網路爬蟲、Lucene是全文檢索工具包、Hadoop是分散式儲存與計算、Solr是搜尋伺服器、Tika是內容分析工具包、Gora是ORM的大資料版、HBase是基於Hadoop的分散式資料庫,都是Java開源框架。

作為一個Java工程師,這些技術我相信大家都有所耳聞,尤其是Lucene,幾乎可以應用到帶有搜尋功能的所有專案中。Solr基於Lucene,提供了更多的企業級特性。Tika可以從各種不同的文件中提取元資料和結構化文字內容。Nutch從一開始的搜尋引擎演變為如今的網路爬蟲,在進化過程中,產生了Hadoop、Tika和Gora三個專案,如今這三個專案都發展迅速,極其火爆,尤其是Hadoop,其已成為大資料和雲端計算的代名詞。

我希望這套視訊能對學習的同學起到拋磚引玉的作用,激發大家學習大資料、搜尋引擎的熱情。