黑客马拉松Java开发者工具(企业级开发框架,简化开发过程提高代码效率)
Posted Java架构师-大仙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑客马拉松Java开发者工具(企业级开发框架,简化开发过程提高代码效率)相关的知识,希望对你有一定的参考价值。
在本文中,我将向您介绍有哪些黑客马拉松的Java工具,可以简化开发的过程,并提高代码的整体效率。
什么是黑客马拉松?
黑客马拉松通常是指在给定的时间范围内(如24或48小时),参赛者成功地解决某个问题,并交付出对应的应用程序的过程。它通常会涉及到如下环节:
- 招募并组建团队去参加比赛活动。
- 比赛组织者通知参与者,有关黑客马拉松的具体主题。
- 团队通过协商,决定准备编写何种应用程序。
- 团队在给定的时间内交付出应用程序,组织者判断输赢。
经典的Java企业级应用框架
在大多时候,参赛团队的大量时间往往会被浪费在配置等繁琐的过程中。为此,他们在比赛期间,通常会通过选择如下图所示的经典Java企业级应用框架,来搭建出最简单的程序架构,进而节省大量的开发时间。
用户界面(User Interface,UI)
用户界面对于绝大多数项目而言,都是不可或缺的重要部分。众所周知的一项基本原则是:UI不应过于酷炫,而应讲求的是实用。正如前面提到的,对于快速原型设计而言,团队需要拥有一个带有现成组件的框架库。在此,我向您推荐React
,及其时下流行、且含有大量React库的material UI
。
当然您也可以使用诸如:Vaadin、ZK、以及GWT等,通过Java生成和创建javascript用户界面的框架。
HTTP API以及UI的通信方式
注意,HTTP并非唯一的通信方式,根据某些项目的实际需求,我们可能需要使用websockets来实现快速的通信。目前,业界有着许多可实现快速构建HTTP API的实用工具。在此,我向您推荐Spring Boot Web
。它提供了丰富的功能,以便用户轻松地转换和解析各种HTTP请求。
业务逻辑
虽然这是一个非常灵活多变的部分,但实际上,业务层是一个针对服务或数据存储库的,能够起到承上启下的关键性作用层。该领域常用的工具包括:带有依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IOC)模式的Google Juice。当然自己也可以自行进行编写业务逻辑。不过,我仍然会推荐您使用Spring Framework(https://spring.io/)。
云端API
有了前面的业务逻辑,我们可以引入各种服务了。如您所知,云服务提供了大量不同的API。其中,以AWS、Google Cloud、以及Azure为首的平台,都能够提供涵括了从语音识别到机器学习等应用领域的工具。不过,它们虽然功能强大,但是往往会持续向用户收费。因此您需要在构建应用程序时,慎重调用由它们提供的API逻辑。
实用的工具和库
在应用实现的过程中,为了避免重复造轮子,您可以使用诸如:Apache Commons或Guava Collections等不同的流行代码库。在此,您可以参考如下实用的链接:
GitHub有关Java的存储库:https://github.com/akullpp/awesome-java
数据库连接
最直接且最常用的连接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);
}
因此,其基本流程是:
-
生成与自己的数据表相匹配的类实体。
-
扩展Spring Data的各种接口,并使用它们。
Spring REST 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,来生成各种实体类。
JMS或调度程序
在讨论了业务逻辑或服务之后,我们需要重点考虑同步和异步的实现问题。通常,我们可以通过以Topic和Queue Pattern为代表的Java消息队列,来配合RabbitMQ、Active MQ或Kafka等工具予以解决。当然,无论采用哪种工具,您都需要花些时间,通过对它们进行额外的配置,才能运行并实现消息的代理。
异步解决方案: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工具的介绍与推荐,能够帮助您更加从容地参加黑客马拉松比赛,并取得好成绩。最新2021整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等
以上是关于黑客马拉松Java开发者工具(企业级开发框架,简化开发过程提高代码效率)的主要内容,如果未能解决你的问题,请参考以下文章