黑客馬拉松比賽(Hackathon competitions)可謂最能激勵開發人員自行創建解決方案的有效方法之一。不過,該領域目前尚屬冷門,開發人員對於整個比賽、乃至與之相關的概念與工具可
2021-06-25 14:25:34
黑客馬拉松比賽(Hackathon competitions)可謂最能激勵開發人員自行創建解決方案的有效方法之一。不過,該領域目前尚屬冷門,開發人員對於整個比賽、乃至與之相關的概念與工具可能並不熟悉。在本文中,我將向您介紹有哪些黑客馬拉松的Java工具,可以簡化開發的過程,並提高程式碼的整體效率。
黑客馬拉松通常是指在給定的時間範圍內(如24或48小時),參賽者成功地解決某個問題,並交付出對應的應用程式的過程。它通常會涉及到如下環節:
招募並組建團隊去參加比賽活動。
比賽組織者通知參與者,有關黑客馬拉松的具體主題。
團隊通過協商,決定準備編寫何種應用程式。
團隊在給定的時間內交付出應用程式,組織者判斷輸贏。
在大多時候,參賽團隊的大量時間往往會被浪費在配置等繁瑣的過程中。為此,他們在比賽期間,通常會通過選擇如下圖所示的經典Java企業級應用框架,來搭建出最簡單的程式架構,進而節省大量的開發時間。
常見的Java EE應用架構
使用者介面對於絕大多數項目而言,都是不可或缺的重要部分。眾所周知的一項基本原則是:UI不應過於酷炫,而應講求的是實用。正如前面提到的,對於快速原型設計而言,團隊需要擁有一個帶有現成元件的框架庫。在此,我向您推薦React,及其時下流行、且含有大量React庫的material UI。
Material UI的概覽圖
當然您也可以使用諸如:Vaadin、ZK、以及GWT等,通過Java生成和創建JavaScript使用者介面的框架。
Java類的UI框架
注意,HTTP並非唯一的通訊方式,根據某些項目的實際需求,我們可能需要使用websockets來實現快速的通訊。目前,業界有著許多可實現快速構建HTTP API的實用工具。在此,我向您推薦Spring Boot Web。它提供了豐富的功能,以便使用者輕鬆地轉換和解析各種HTTP請求。
Spring Boot Web的示例截圖
雖然這是一個非常靈活多變的部分,但實際上,業務層是一個針對服務或資料儲存庫的,能夠起到承上啟下的關鍵性作用層。該領域常用的工具包括:帶有依賴注入(Dependency Injection,DI)和控制反轉(Inversion of Control,IOC)模式的Google Juice。當然自己也可以自行進行編寫業務邏輯。不過,我仍然會推薦您使用Spring Framework。
使用Spring Framework的業務邏輯
有了前面的業務邏輯,我們可以引入各種服務了。如您所知,雲服務提供了大量不同的API。其中,以AWS、Google Cloud、以及Azure為首的平臺,都能夠提供涵括了從語音識別到機器學習等應用領域的工具。不過,它們雖然功能強大,但是往往會持續向用戶收費。因此您需要在構建應用程式時,慎重呼叫由它們提供的API邏輯。
雲端API服務示例
在應用實現的過程中,為了避免重複造輪子,您可以使用諸如:Apache Commons或Guava Collections等不同的流行程式碼庫。
實用的工具和庫
最直接且最常用的連線SQL資料庫的方案,當屬使用諸如:Apache JDBC模板或Spring模板等JDBC包裝器。不過,由於黑客馬拉松比賽的時間有限,因此開發者經常會使用Spring Data,來實現資料訪問物件(Data Access Object,DAO)的快速設計。Spring Data能夠為各種SQL、以及NoSQL資料來源,提供多種介面卡和解決方案。在下面的程式碼例子中,我們採用了Spring Data JPA,為各種類提供開箱即用的CRUD(新增Create、檢索Retrieve、更新Update和刪除Delete)、以及查詢操作。
Java
public interface UserDao extends JpaRepository<User, Long> { User findUserById(Long id); }
因此,其基本流程是:
1. 生成與自己的資料表相匹配的類實體。
2. 擴展Spring Data的各種介面,並使用它們。
而Spring Rest Data解決方案不僅能夠為儲存庫生成 CRUD操作,還可以通過UI提供和公佈帶有CRUD的HTTP端點。例如:
@RepositoryRestResource public interface UserRepository extends PagingAndSortingRepository<User, Long> { List<User> findByName(@Param("id") Long id); }
在提供了HTTP API的前提下,應用程式能夠通過ID去讀取使用者。一旦得以實現,下一個端點也就隨即可用了:
純文字
{ "_links" : { "users" : { "href" : "http://localhost:8080/users{?page,size,sort}", "templated" : true } }
為了簡化資料庫的設計過程,您可以通過使用SqlYog應用,來生成表結構模式(schema)。在此基礎上,您可以繼續使用IntelliJ IDEA,來生成各種實體類。
資料庫的準備:SqlYog和IntelliJ IDEA
在討論了業務邏輯或服務之後,我們需要重點考慮同步和非同步的實現問題。通常,我們可以通過以Topic和Queue Pattern為代表的Java訊息佇列,來配合RabbitMQ、Active MQ或Kafka等工具予以解決。當然,無論採用哪種工具,您都需要花些時間,通過對它們進行額外的配置,才能運行並實現訊息的代理。
JMS 或排程程式方案的示例
幸運的是,大多數非同步問題都可以通過各種簡單的排程(scheduling)和觸發(triggering)模式,來予以解決。
Docker不僅是一個可用於快速部署應用程式的解決方案,而且還是一個擁有大量現成框架的百寶箱。您可以通過它,輕鬆地運行各種類型的預配置解決方案。
正如《唐·吉訶德》的作者Miguel de Cervantes所言:「好的準備就已經勝利了一半」。希望上述有關Java工具的介紹與推薦,能夠幫助您更加從容地參加黑客馬拉松比賽,並取得好成績。
相關文章
黑客馬拉松比賽(Hackathon competitions)可謂最能激勵開發人員自行創建解決方案的有效方法之一。不過,該領域目前尚屬冷門,開發人員對於整個比賽、乃至與之相關的概念與工具可
2021-06-25 14:25:34
#3DMark迎來版本大更新#3DMark新增針對 CPU的基準測試 3DMark CPU Profile,能反應多核 CPU在不同執行緒下的效能3D Mark宣佈今日在進階版與專業版新增針對 CPU的測試基準 3DM
2021-06-25 14:25:16
6月25日,小米集團副總裁常程突然宣佈,小米11青春版全系降價,最低只要2099元,這意味著小米11青春版已經跌至2099元了。而今天,也是榮耀50正式開售的一天,小米11青春版突然降價,可能
2021-06-25 14:23:15
果粉之家,專業蘋果手機技術研究十年!您身邊的蘋果專家~最新報道,根據View from the Wing 瞭解的一份美國航空公司備忘錄來看,該航空公司計劃在未來一年內向員工免費發放新的iPho
2021-06-25 14:23:03
2021 年 6 月 24 日訊息,@魅族科技 官方微博公佈資訊,魅族全智慧手錶將於 6 月 25 日上午 10:00 在魅族商城、京東自營旗艦店再次開售,此前備受煤油關注的天青配色與經典墨巖配
2021-06-25 14:22:47
IT之家 6 月 25 日訊息 微軟現推出了全新的 Windows 11 作業系統,從公佈的硬體基本要求來看滿足 1 GHz+ 的 64 位 CPU、4 GB+ 記憶體、64 GB+ 儲存裝置均可支援升級,但從官方
2021-06-25 14:22:23