许多开发人员在其职业生涯的某个阶段最终进入了Java“企业”世界。 我知道,仅此一个词就能引起各种反应,这是正确的。 通常,存在许多有趣的技术挑战的环境最终会成为那些没人愿意从事的环境,因为它们脆弱,难以处理且没有乐趣。 大型项目中经常出现的问题通常是由于管理引起的,但是我已经看到开发人员做出了许多错误的决定,这些错误的决定导致了糟糕的软件,而这些都是以“企业”为名的。

什么是企业?

您可能会争辩说该术语几乎可以表示任何东西,这是真的,但是为了本文的目的,我将以一种我认为与常用用法一致的方式对其进行定义。 普通的企业项目具有以下属性:

  • 通常在大型公司环境中
  • 涉及多层管理/指导
  • 首选来自Red Hat,IBM或Microsoft等大型供应商的解决方案
  • 偏爱知名的,既定的(虽然有时是不足的)产品和标准
  • 有关扩展和性能的担忧

现在,我已经定义了我们正在谈论的项目类型,让我们看看它们通常看起来像什么。

典型的企业Java项目

我们大多数人都看到过企业项目的标志。 如果我们举个例子,那会有所帮助,所以让我们假设它是一个具有某些B2B功能的电子商务平台。 可能是这样的:

  • EJB3加上JPA和JSF –它们符合“标准”,每个人都可以使用它们,因此这是安全的选择。
  • SOAP –它是标准的,定义了安全性之类的工作方式,因此无需担心。
  • JMS 消息驱动Bean –适合平台,并提供可靠性和负载平衡。
  • 石英用于工作安排–一种“安全”的选择(比不认识的魔鬼好,是您认识的敌人)。
  • 部署在JBoss上 –它得到了一家大公司的支持和付费支持渠道。

现在,像这样的项目存在的问题不一定是所选的单个技术。 我的示例中肯定有一些问题,但是真正的问题是如何做出选择以及使用某些技术的动机。

众所周知,与其他选择相比,上面的软件堆栈更难管理和使用。 开发将需要更长的时间才能起步,随着需求的发展,更改将变得更加困难,并且该项目最终将比其他可能的解决方案更加复杂。

企业决策

企业项目在做出选择时通常要确定的目标是:

  • 低风险技术–选择“安全”的选择,即使已知有严重的缺陷,也不会造成反吹。
  • 对标准的痴迷–与提供诸如EJB3或SOAP之类的定义明确的规范相比,对于提供有效地完成工作的最简单解决方案的担忧更多。
  • 需要通过SLA获得有偿支持,通常无需担心响应的质量或及时性。
  • 出于对未知未来需求的担心而进行设计。

除了最后一个目标,这些目标不是坏目标,但它们往往使每个软件项目的实际目标蒙上阴影。 所有软件项目的主要目标是交付一个项目,该项目:

  • 准时;
  • 符合要求;
  • 可靠;
  • 表现良好; 和
  • 易于维护和扩展。

这些应该是决策者在软件项目中无论大小的重点。 显而易见,有时特殊的组织需求会影响做出的选择,但是从根本上讲,好的选择通常适用于所有类型的组织。

那么,如果我们以这些目标重新构想我们的项目怎么办?

重新构想的企业项目

首先,有一点免责声明:任何项目都有很多方法可以使用,我不会断言以下技术要比前面提到的技术更好。 需要根据您的需求对工具进行评估,每个工具都不尽相同。

我将尝试做的是演示示例技术堆栈以及每种选择的理由。 这将显示出如何构建设计良好的系统,该系统可以在企业环境中生存,而不必屈服于经常做出的错误选择。

这是建议的堆栈:

  • 使用Thymeleaf的 Spring MVC –稳定的历史,大量的开发资源,快速的开发和灵活性。 不要害怕使用平台或库,但要避免过多地“购买”它们的堆栈,您可能会后悔。
  • 在有用的地方使用jOOQ进行持久化的简单数据库层。 这使我们能够以更细粒度的方式来管理性能,同时仍然可以轻松地与数据库交互并避免ORM陷阱 。
  • 使用Jackson JSON处理器的REST – REST和JSON都很流行,因为它们易于使用和理解,开发便宜,使用简单的标准并且为开发人员所熟悉。 锁定也不是什么大问题–与SOAP不同,我们可以轻松切换到另一个JSON处理器而没有太多困难。 可以使用SSL和基本身份验证轻松保护这一点。
  • JMS消息传递在ActiveMQ上使用JSON编码的消息–松散的耦合,可靠性和负载平衡,而不会被消息驱动Bean所困扰。
  • Obsidian Scheduler –简单易用,可提供出色的监控并减轻开发人员的负担。 再一次,目标是在可能的情况下简化并降低成本。
  • 部署在Tomcat上 -不使用专有功能。 这可以帮助我们遵循标准,避免升级问题,并使将来的工作继续进行。 当事情并非总是无法解决时,谁需要SLA支持?

我认为上面的堆栈和相应的说明有助于您从正确的角度来研究一个企业项目可以是什么。 这样做的目的是表明,即使是企业项目也可以是简单的并且可以灵活地构建– blo肿的框架和平台不是必需的部分,并且很少提供任何明显的实益。

收盘时

REST等技术的最新发展趋势令人鼓舞,并且正在进入企业界。 开发团队意识到,只要基础技术选择能够满足项目的性能,安全性等需求,简单就能带来可靠性和成本效益的解决方案。

软件世界发展Swift,并显示出朝着正确方向发展的良好迹象。 我只希望有一天,of肿的企业平台的回忆会变得晦涩难懂。

参考: Java企业软件与我们的JCG合作伙伴 Craig Flichel的应有的相伴之处, 来自Carfey Software Blog博客。

翻译自: https://www.javacodegeeks.com/2014/03/java-enterprise-software-versus-what-it-should-be.html

Java Enterprise软件与应有的内容相关推荐

  1. Java Enterprise软件与应有的软件

    许多开发人员在其职业生涯的某个阶段最终进入了Java"企业"世界. 我知道这个词会引起各种React,这是正确的. 通常,存在许多有趣的技术挑战的环境最终会成为那些没人愿意从事的环 ...

  2. java培训教程分享:Java编写软件代码自动提示功能

    本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能,很多零基础和初学java的同学们对这一块还不是很了解,Eclipse for android 实现代码自动提示智能提示功能 ...

  3. 针对教育和软件行业的多平台Java勒索软件分析

    0x01 基本信息 Tycoon是针对Windows®和Linux®的多平台Java勒索软件,至少从2019年12月起就在野外活动,它以木马Java运行时环境(JRE)的形式部署,并利用晦涩的Java ...

  4. java高级软件工程师面试_高级软件工程师的新面试问题

    java高级软件工程师面试 I'm putting together some practice interview questions for a friend who lost his job. ...

  5. Java培训学习之Java开源软件的汇总

    Java开源软件的汇总: EcSplorer [Java开源 Eclipse插件] EcSplorer(Eclipse Simplified Explorer)是一个类似于 Windows Explo ...

  6. JAVA计算机毕业设计云音乐后端内容管理系统Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计云音乐后端内容管理系统Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计云音乐后端内容管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S ...

  7. java 复杂报表_复杂Java报表解决方案|思达Java报表软件Style Report

    复杂报表解决方案 思达Java报表软件 Style Report 作为国内首屈一指的 Java 报表软件在对中国式复杂报表的支持上一直都有着先进的理念和独到的解决方案.中国式复杂报表的特点在于表格的复 ...

  8. Java西西软件_随身java学习软件-随身Java清爽版app下载v1.1.2安卓无广告版-西西软件下载...

    随身Java清爽版app是一款非常适合初学者和有一定的开发经验的开发者使用Java技术学习应用,随身Java精选了在Java基础.JavaEE.数据库.面试等过程中经常遇到的知识点,覆盖面广.适用于初 ...

  9. 学Java的软件哪些比较好用

    很多java程序猿在工作的时候都会用一些辅助工具,辅助工具可以很好的帮助程序猿高效率的完成工作,那么具体学Java的软件哪些比较好用呢?来看看下面的详细介绍. 学Java的软件哪些比较好用? 1. E ...

最新文章

  1. 五、spring boot整合mybatis-plus
  2. 综述丨七场高端报告,带你大视角看人工智能发展
  3. 如何实现1像素的表格
  4. Vue删除数据成功后如何刷新表格数据
  5. MySQL事物的概念
  6. Python的第一个程序 Hello world
  7. 全球撤稿排行榜前10出炉:第一名多到想象不到
  8. JavaWeb之分页代码
  9. SVN工具添加忽略上传文件和取消忽略文件
  10. 国产艾莫讯仿西门子S7-200PLC控制步进电机程序
  11. 加入go行列的一个敲门砖吗----小玩意cs多人即时聊天,没有用数据库的,没有用框架的
  12. linux下删除空白行命令
  13. 验收测试的名词解释_验收测试工作流程及准则
  14. shapely包的使用
  15. 如何创建NEO轻客户端
  16. IRQL深入解析(3)--与IRQ比较
  17. FTT NTT 分治FFT
  18. win10 任务栏无法使用鼠标一直转圈圈解决方式
  19. 区块链习题知识汇总练习——大力推进区块链、原宇宙技术发展
  20. 如何通过GB35114国密标准接入到LiveGBS GB28181/GB35114监控平台

热门文章

  1. excel批量插入 配置yml
  2. php滚动公告源码,好用的滚动公告HTML代码
  3. javabean与json转换(fastjson与jackson两个版本)
  4. Redis学习之缓存穿透、缓存击穿和缓存雪崩详解
  5. oauth2.0协议流程_正确的工作流程:我应该使用哪个OAuth 2.0流程?
  6. junit数据驱动测试_使用Junit和Easytest进行数据驱动的测试
  7. 设计模式示例_介体设计模式示例
  8. java ee maven_真正释放Maven和Java EE的强大功能
  9. 检查Java测试中发生了什么
  10. java8 streams_当Java 8 Streams API不够用时