升级或不升级

时间:2009-04-20 04:42:43

标签: java .net

我倾向于认为与最新版本保持同步是一件好事。这并不意味着产品一发布就会升级 - 但在之后的相对较短的时间内(3-6个月)。

升级可以用于应用程序服务器,.NET Framework,Java SDK,数据库,第三方组件等。

我发现供应商通常会提供从版本到版本的相当简单的升级路径,如果升级必须跳过几个版本(例如.NET Framework 1.1 - > 3.5 sp1),则升级会变得更有问题

如果应用程序在生产中运行良好而没有任何问题,我可以理解不改变任何内容并避免回归测试开销的愿望。但是,随着自动化单元测试的广泛采用,如果新版本在性能和/或功能方面提供显着优势,是否值得升级?

根据我的经验,我发现产品通常不会保持最新状态,并且当不再支持产品的特定版本时,升级到最新版本的任务往往非常耗时且昂贵。

我的问题是:

与最新版本的主要系统组件(如操作系统,应用程序服务器,数据库,框架等)保持同步是不是一个好主意?

修改

目前,我们拥有经过认证可以使用Java SDK 1.4.2的Oracle Application Server 10.1.2.x. Java的最新版本现在为1.6(目前正在开发1.7),Oracle Application Server高达10.1.3(已通过SDK 1.5 +认证)。

通过升级到SDK 1.5(至少),它开辟了开发新应用程序以使用现有基础架构来使用更多当前版本的支持框架(如Hibernate 3.3或iBATIS 2.3.4)以及更高版本的标准的可能性。 JSP,JSF等

如果没有完成这些升级,正在开发的新应用程序仅限于使用旧版本,因此会增加未来升级的时间和成本。

5 个答案:

答案 0 :(得分:2)

我从经验上发现,在个人Linux机器上对整个操作系统进行增量升级通常不值得。在进行全系统升级之后,yum或apt-get多次使用我的系统,我通常仅限于升级我需要的那些软件包。特别是对于非GUi用户,我不记得上次Ubuntu本身有一个杀手级功能而不是(比方说)R或gcc。

服务器是另一回事 - 在安全补丁方面,至少你需要保持最前沿。

就软件而言,立即升级到新版本并不像人们想象的那样给你一个良好的开端。当您处理新版本引入的各种破坏时,您将使用砍刀清理草丛,在Stackoverflow和其他地方发布答案。

然后其他人在3个月后跟进,并从您和其他人削减的路径中获益,这是早期采用者在网上发布的所有答案。你的有效领导(也许)只有1个月。

(例外情况可能是iPhone平台或Facebook平台,其中开发时间以天计算,先发优势巨大。)

使用硬件IMO可能更重要的是等待一段时间才能获得步进功能跳转。等到你升级之前达到相当于“四分之一气罐”的时间,因为你等待的时间越长,你的应用程序的跳跃功能就越大。第一代英特尔Mac可能是有必要提前升级的少数几次之一,因为跳跃在一夜之间如此明显。

所有这一切,我认为成为概念(尤其是数学)的早期采用者是至关重要的(显然)。软件可以在你当地的盒子上玩,但IMO肯定会在发布后至少等待2-3个月才能投入生产。

答案 1 :(得分:2)

首先在测试系统上升级。验证。冲洗并重复洗涤。

答案 2 :(得分:2)

升级的一个很好的理由是旧系统将不受支持。例如,Java 1.4.2已经在end of service life,而Java SE for Business(基本上是相同的产品,但有更长的付费支持),升级是个好主意。

在您需要的不受支持的产品中发现主要安全问题并且没有任何更新路径时,有一些更糟糕的事情,因为没有测试更新的版本。

我看到有几家公司为这些产品的使用寿命结束后支付某些产品(操作系统,硬件......)支付了大笔费用,仅仅是因为他们没有任何升级策略。

答案 3 :(得分:1)

这个问题的“正确”答案真的取决于你所谈论的确切包装/系统,以及你如何配置它。此外,一些升级可能会破坏向后兼容性 - 因此问题是:“将要破解多少以及修复它需要多长时间?”

老实说,根据经验,我更喜欢在开发环境中尝试升级,并部署到测试环境以查看它将会有多少工作。

我更喜欢将所有内容保留在当前版本的真正原因是:

  

产品通常不会保持最新状态,当不再支持产品的特定版本时,升级到最新版本的任务往往非常耗时且昂贵。

我同意,因此每次可以升级某些东西而不是等待并且稍后必须对所有内容进行分类时,我更愿意做一些工作。

答案 4 :(得分:1)

保持与当前版本非常接近绝对是一个好主意。通过不升级您可以节省任何即时问题,但是您可以在项目/应用程序生命周期中节省大量工作。通常那些今天作出保守决定的人,在绝对迫切需要升级的时候就会早已消失,因此他们“免费”。在那里,由我们作为技术资源指出,短期的痛苦比以后完整的项目崩溃要好。

我的一个很好的例子是在Oracle 8.0上编写的一个庞大的系统,它现在仍然在Oracle 8.0上 - 它经常失败,因为该版本太旧而几乎无法修补,并且会尽快丢弃任何人都有政治因素来做到这一点。不进行升级的成本目前在停机时间,专家支持以及与其他技术缺乏兼容性的情况下以每年100万美元的速度运行。

今天底线不升级,意味着以后花费大笔资金。