毫无疑问,Java是目前最需要的编程语言之一。在这里,我们已经挖掘了一些关于框架趋势的有用信息,根据RebelLabs,GitHub,StackOverflow,整理出5个Java框架的优缺点。
Spring MVC
姜还是老的辣,自离首次发布 10 多年以来,Spring MVC 框架仍然领先于竞争对手。随着时间的推移,它扩展成一个完整的MVC框架,并不断演变成一个全面的Java框架。作为程序员中最受欢迎的框架之一,Spring有一个得到很好开发的生态系统,提供各种附加选项:REST API或SOAP Web服务,安全(身份验证和授权,加密)等。选择它还有一个好处是很多大公司里的开发同行也选择用这个特定的Java框架。因此,他们可以为你提供你所需的查询帮助。
优点
- 增强模块化的轻量级容器
- 可以跨各种平台进行部署
- 灵活的依赖注入使用
- 包括XML,Java和注释配置的三路配置
- 通过POJO's缓解了注射测试的数据
缺点
- 学习曲线比较陡峭
- 新手掌握比较困难
- 需要花费时间部署
Google Web Toolkit
Google Web Toolkit(GWT)是一个免费开源开发工具集,使开发人员能够构建和优化复杂的JS前端应用程序。GWT软件开发套件提供核心Java API和小部件,用于构建之后编译为JavaScript的应用程序。
优点
- 内置IDE支持重构Java代码
- 可以在客户端大量构建响应式Web应用程序,并减少服务器端的琐事
- 可以迭代地平滑地从典型的Web应用程序迁移到GWT应用程序
- 即使在使用AJAX的情况下,也具有内置的浏览器后退按钮支持
缺点
- 仅对Java开发人员有利,对PHP或.NET的开发人员没有太大帮助
- 由于快速发展的GWT,有许多版本很难获得所有功能和接口
- 编译速度慢,需要使用专有方法来定义结构
Redis
redis是一个key-value存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
优点
- 异常快速
- 支持丰富的数据类型
- 操作都是原子性。
- 多功能实用工具。
缺点
- 单线程
- 耗内存
Ehcache
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。
优点
- 快速简单
- 多种缓存策略
- 缓存数据会在虚拟机重启的过程中写入磁盘
- 可以通过RMI、可插入API等方式进行分布式缓存
- 具有缓存和缓存管理器的侦听接口
- 支持多缓存管理器实例,以及一个实例的多个缓存区域
- 提供Hibernate的缓存实现
缺点
- 使用磁盘Cache的时候非常占用磁盘空间。
- 不能保证数据的安全
Struts
Apache的Struts是一个用于开发现代Java Web应用程序的开源免费MVC框架。它包含一组类和接口,共同协作开发Web应用程序。它适用于许多Java应用程序的网络框架,并且受到了很多社区的支持。为了进一步扩展Struts Java框架,Struts 2 作为后继者有了很大的改变。这个框架最适合于开发当代 Java EE web 应用程序的工程师,Apache 软件基金会借助 Struts 2 为开发人员提供了一个用于开发面向网络的,企业级应用程序,并优化整个开发流程的工具。
优点
- 没有线程安全问题
- 依赖注入使得测试更简单
- 它可以使用“对象图导航语言”(OGNL)
- Struts 2框架的Servlet上下文以简单的地图形式表示
- 它支持通过验证方法进行手动验证,并且还包含子框架验证
缺点
- 由于它与Struts 1完全不同,难以迁移
- Struts 2 文档非常有限
- 由于文档管理不善,新用户很难发现它的优点
那么选择什么呢?
在各种流行的Java框架中选择合适的概念可能是一个麻烦的任务,因为每个公司在选择获胜方法时都会坚持他们自己基于web和移动app创建的思想。无论你使用的是什么确切的框架,谨记许可证,易于安装,网络的活跃程度,以及手边的文档等。根据项目类型,有时,明智的做法是将所有工具放在一起挑选,但很多时候,“减肥”和转向一个轻量级的概念更有意义。
最后,我自己是一名从事了多年开发的Java老程序员,辞职目前在做自己的Java私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的Java学习干货,可以送给每一位喜欢Java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:01,即可免费获取。