为开发者准备的黑客马拉松Java工具

译文
开发 后端
本文通过向开发者介绍与推荐各种常用的Java工具,以方便他们更加从容地参加黑客马拉松比赛。

[[407165]]

【51CTO.com快译】黑客马拉松比赛(Hackathon competitions,请参见--https://en.wikipedia.org/wiki/Hackathon)可谓最能激励开发人员自行创建解决方案的有效方法之一。不过,该领域目前尚属冷门,开发人员对于整个比赛、乃至与之相关的概念与工具可能并不熟悉。在本文中,我将向您介绍有哪些黑客马拉松的Java工具,可以简化开发的过程,并提高代码的整体效率。

什么是黑客马拉松?

黑客马拉松通常是指在给定的时间范围内(如24或48小时),参赛者成功地解决某个问题,并交付出对应的应用程序的过程。它通常会涉及到如下环节:

  • 招募并组建团队去参加比赛活动。
  • 比赛组织者通知参与者,有关黑客马拉松的具体主题。
  • 团队通过协商,决定准备编写何种应用程序。
  • 团队在给定的时间内交付出应用程序,组织者判断输赢。

经典的Java企业级应用框架

在大多时候,参赛团队的大量时间往往会被浪费在配置等繁琐的过程中。为此,他们在比赛期间,通常会通过选择如下图所示的经典Java企业级应用框架,来搭建出最简单的程序架构,进而节省大量的开发时间。

常见的Java EE应用架构

用户界面(User Interface,UI)

用户界面对于绝大多数项目而言,都是不可或缺的重要部分。众所周知的一项基本原则是:UI不应过于酷炫,而应讲求的是实用。正如前面提到的,对于快速原型设计而言,团队需要拥有一个带有现成组件的框架库。在此,我向您推荐React,及其时下流行、且含有大量React库的material UI

Material UI的概览图

当然您也可以使用诸如:Vaadin、ZK、以及GWT等,通过Java生成和创建JavaScript用户界面的框架。

Java类的UI框架

HTTP API以及UI的通信方式

注意,HTTP并非唯一的通信方式,根据某些项目的实际需求,我们可能需要使用websockets来实现快速的通信。目前,业界有着许多可实现快速构建HTTP API的实用工具。在此,我向您推荐Spring Boot Web。它提供了丰富的功能,以便用户轻松地转换和解析各种HTTP请求。

Spring Boot Web的示例截图

业务逻辑

虽然这是一个非常灵活多变的部分,但实际上,业务层是一个针对服务或数据存储库的,能够起到承上启下的关键性作用层。该领域常用的工具包括:带有依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IOC)模式的Google Juice。当然自己也可以自行进行编写业务逻辑。不过,我仍然会推荐您使用Spring Framework(https://spring.io/)。

使用Spring Framework的业务逻辑

云端API

有了前面的业务逻辑,我们可以引入各种服务了。如您所知,云服务提供了大量不同的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

  1. public interface UserDao extends JpaRepository<User, Long> { 
  2.   
  3.     User findUserById(Long id); 
  4.   

因此,其基本流程是:

1. 生成与自己的数据表相匹配的类实体。

2. 扩展Spring Data的各种接口,并使用它们。

Spring REST Data

而Spring Rest Data解决方案不仅能够为存储库生成 CRUD操作,还可以通过UI提供和公布带有CRUD的HTTP端点。例如:

  1. @RepositoryRestResource 
  2. public interface UserRepository extends PagingAndSortingRepository<User, Long> { 
  3.     List<User> findByName(@Param("id") Long id); 

在提供了HTTP API的前提下,应用程序能够通过ID去读取用户。一旦得以实现,下一个端点也就随即可用了:

纯文本

  1.   "_links" : { 
  2.     "users" : { 
  3.       "href" : "http://localhost:8080/users{?page,size,sort}"
  4.       "templated" : true 
  5.     } 

数据库的准备

为了简化数据库的设计过程,您可以通过使用SqlYog应用,来生成表结构模式(schema)。在此基础上,您可以继续使用IntelliJ IDEA,来生成各种实体类。 

数据库的准备:SqlYog和IntelliJ IDEA

JMS或调度程序

在讨论了业务逻辑或服务之后,我们需要重点考虑同步和异步的实现问题。通常,我们可以通过以Topic和Queue Pattern为代表的Java消息队列,来配合RabbitMQ、Active MQ或Kafka等工具予以解决。当然,无论采用哪种工具,您都需要花些时间,通过对它们进行额外的配置,才能运行并实现消息的代理。

JMS 或调度程序方案的示例

异步解决方案:Spring Quartz

幸运的是,大多数异步问题都可以通过各种简单的调度(scheduling)和触发(triggering)模式,来予以解决。在实践中,您可以使用由Spring提供的Quartz 解决方案,具体内容请参见--https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/html/boot-features-quartz.html。

简单快速的部署:Docker

Docker不仅是一个可用于快速部署应用程序的解决方案,而且还是一个拥有大量现成框架的百宝箱。您可以通过它,轻松地运行各种类型的预配置解决方案。

小结

正如《唐·吉诃德》的作者Miguel de Cervantes所言:“好的准备就已经胜利了一半”。希望上述有关Java工具的介绍与推荐,能够帮助您更加从容地参加黑客马拉松比赛,并取得好成绩。

原文标题:Hackathon Java Tools for Developers,作者: Dmitry Egorov

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:华轩 来源: 51CTO
相关推荐

2013-01-16 16:01:54

Google Glas开发者增强现实

2012-09-06 11:09:35

2015-07-31 09:42:56

编程语言黑客马拉松

2015-08-03 09:19:37

2012-08-24 14:05:00

2014-04-17 16:13:39

美团技术团队的“黑客马

2012-11-28 17:32:41

Windows 8微软开发

2013-05-17 14:57:26

2023-06-02 10:27:26

2012-08-28 14:07:32

2016-04-14 16:21:38

2014-10-28 10:55:32

锐捷

2020-10-22 15:16:01

网络通信数据

2018-03-13 18:28:35

华为云软件开发开发云

2013-09-12 09:49:36

PHP调试工具PHP调试工具

2012-09-17 08:58:57

2013-09-11 14:31:27

2012-11-04 18:35:21

2012-03-26 18:36:13

2013-11-18 20:55:20

点赞
收藏

51CTO技术栈公众号