【问题标题】:Java Time Savers [closed]Java 节省时间 [关闭]
【发布时间】:2009-06-29 06:02:07
【问题描述】:

我发现这个问题的性质非常适合 Stack Overflow 上务实的人。

我正在着手用 Java 制作一个相当大的项目。我不打算详细介绍,但它将涉及数据管理、异构格式的解析,并且需要具有具有编辑器语义的吸引人的界面。我是一名本科生,我认为它会演变成一个很好的项目来展示我的就业技能——哎呀,理想情况下,它甚至可以成为创业的基础。

我写信是想问你,我可能没有想到哪些捷径可以帮助 Java 中的复杂项目。当然,我打算在 Eclipse 中使用它,并且可能将 SWT 用于 GUI。但是,我知道 Java 有一个不幸的特点,就是让一切都过于复杂,我不想陷入困境。

在你告诉我我想用 Python 或类似的东西来做之前,我只想重申我为什么会选择 Java:

  1. 在 Java 算法方面有更多经验,而且还会有很多。

  2. 需要一个庞大的 API 库来扩展功能。 ANTLR、数据库、处理特定格式的库

  3. 想要在任何地方以良好的性能运行它

    我对所有技术都持开放态度(最熟悉 Java、perl、sql,有点函数式)。

编辑暂时,我把它给了 djna(虽然票数很低)。我认为你所有的答案在某些方面肯定是有帮助的。

我认为 djna 更好地击中了我作为新手程序员需要注意的东西,认识到我不是走捷径而是尽量不搞砸。至于大型框架的建议,尤其是。 J2EE,在这种情况下太多了。我正在尝试提供最简单的解决方案,并且我的 API 可以由非 J2EE/JDBC 专家扩展。

感谢您提出 Apache Commons,尽管我已经知道了。仍然对 SWT 与 Swing 感到困惑,但我使用的每个 Swing 程序都非常丑陋。正如我在帖子中提到的那样,我将最关注我必须自己实现的文件交换和有限数据库功能(但要谨慎——我知道并发性和酸问题)。

仍然是一个需要改进的社区 wiki。

【问题讨论】:

    标签: java frameworks


    【解决方案1】:

    学习/使用Spring,并创建您的项目,使其在没有 Spring 配置的情况下运行(这些事情往往会失控),同时保留配置参数的可能性后期环境。您还可以获得一种统一的方式来集成其他框架,如 Hibernate、Quartz、...

    并且,根据我的经验,远离 GUI 构建器。这似乎很划算,但我喜欢始终保持对代码的控制。

    【讨论】:

    • 我想我对春天这么重的东西有点厌倦了。我在一个从未听说过 SQL 或数据库并且没有 J2EE 的领域工作。从某种意义上说,这个应用程序非常有限,但对于未开化的人来说是简单的数据库。这么看来,春天是不是太过分了?还是它仍然有价值?
    • 它改变了我的编程方式——你可以从一个不错的小核心开始,然后插入不同的代码块(使用依赖注入)。这些块是可配置的(你可以覆盖你的默认值)——当你与不同的客户打交道时非常有价值。 (为改变而设计!)例如,您可以编写一个基本的格式化程序,并使用您注入核心程序的类来扩展它。您不必必须在任何地方都使用 spring,这就是它的美妙之处。此外,如果您在代码中建立了一组基本功能(但仍然可以使用 spring 进行配置),那么它就不会那么重了......
    • 您可以使用 Guice 进行依赖注入。它更小,更容易控制。
    【解决方案2】:

    【讨论】:

    • -1 因为单个库对复杂项目几乎没有帮助
    【解决方案3】:
    • Joda Time 用于所有日期和时间操作。

    • HibernateiBATIS 之一用于操作数据库中的数据

    • 不要忘记 IDE:Eclipse、Netbeans 或 IDEA,如果你有一些现金并且喜欢它

    【讨论】:

    • 我也喜欢。但我在这里读到了不同的意见。
    【解决方案4】:

    Apache Commons 有很多节省时间的代码,您很可能需要这些代码并且可以重复使用。

    http://commons.apache.org/

    【讨论】:

    【解决方案5】:

    一个合理的构建和配置平台会一路帮助你,Ant:

    http://ant.apache.org/

    或 Maven(最好):

    http://maven.apache.org/

    尤其是随着项目规模的扩大,以及项目中模块数量的增加。

    【讨论】:

      【解决方案6】:

      有效地完成“项目”,也有“捷径”。我怀疑以下内容可能属于“避免浪费精力”类别,而不是真正的捷径,但如果其中任何一个能让你更快地结束,那么我可能会有所帮助。

      1)。分解和分离关注点。您已经确定了高级块(UI、持久层、解析器等)。尽快为提供者类定义接口,并让所有依赖类针对这些接口工作。非常注意这些接口的可用性,让它们易于理解——名称很重要。即使是像 setShutdownFlag(true) 和 requestShutdown() 之间的区别这样简单的东西,第二个也有明确的含义,因此我更喜欢它。

      优点:更容易维护。即使在最初的开发过程中,“维护”也会发生。您将想要更改您已经编写的代码。通过强大的封装可以轻松做到这一点。

      2)。期望迭代开发,进行改进和重新设计。不要期望在使用之前孤立地“完成”任何一个组件。换句话说,不要采用纯粹自下而上的方法来开发您的组件。当您使用它们时,您会发现更多信息,当您实施它们时,您会发现更多关于什么是可能的。

      因此,通过模拟和存根低级组件,可以开发更高级别的组件,尤其是 UI。诸如 JMock 之类的东西是一条捷径。

      3)。尽早测试,经常测试。使用 JUnit(或等效的)。你已经为你的低级组件做了模拟,所以你可以测试它们。

      主观上,我觉得当我戴上“测试帽”时,我会写出更好的代码。

      4)。预先定义您的错误处理策略。检测到错误时产生良好的诊断。

      优点:更容易消除错误。

      5)。继错误处理之后 - 使用诊断性调试语句。在你的代码中随意地散布它们。不要使用 System.out.println(),而是使用日志库的调试工具 - 使用 java.util.logging。交互式调试器很有用,但不是分析问题的唯一方法。

      【讨论】:

        【解决方案7】:

        不要为 GUI 打折 Swing。根据您的需求,有很多优秀的 3rd 方 Swing 库可用(开源和商业),例如

        【讨论】:

        【解决方案8】:

        使用日志框架(即 Log4J)并为其制定计划。可靠的日志记录系统在错误修复过程中节省了大量时间。

        【讨论】:

          【解决方案9】:

          对我来说,节省大量时间的是:

          • 使用版本控制 (Subversion/Git)
          • 使用自动构建 (Ant/Make/Maven)
          • 使用持续集成 (Hudson/CruiseControl)
          • apache-commons-libraries 非常有用

          【讨论】:

            【解决方案10】:

            测试驱动开发

            找出您想要的功能并编写测试来演示该功能。然后编写足够的代码来通过测试。这会产生一些很大的副作用:

            1. 通过编写足够的代码来满足您的要求,您不会想要过度构建,这应该会降低复杂性并使您的代码更简洁。
            2. 进行测试可以让您“自信地重构”并更改代码,因为您知道您不会破坏系统的其他部分。
            3. 您正在建立质量。您不仅可以保证您的代码“有效”,而且如果您真的想将此代码用作潜在雇主的一种“简历”,这将向他们表明您放置了一个代码质量非常重要。仅这一点就能让您与大多数开发人员区分开来。

            除此之外,我同意其他节省大量时间的方法是 Spring,它具有自动构建 (Maven),并使用某种形式的源代码控制。

            【讨论】:

              【解决方案11】:

              对于数据持久性,如果您不确定是否必须使用 SQL,您应该查看备用数据存储库:

              • Prevayler:一个内存数据库系统,使用诸如“仅崩溃组件”之类的开发理念,使其易于使用且非常高效。甚至可以用于只需要保存一些状态的简单应用程序。它具有 BSD 许可证。
              • BerkleyDB Java 版:具有不同抽象层的存储系统,因此可以将其用作完全事务性 ACID 系统的基本键值存储(几乎是磁盘内的哈希表)。看看它的许可信息,因为即使是一些商业软件也可以免费使用它。

              请注意,它们在相互比较或与标准 SQL 数据库比较时会有所取舍!而且,当然,可能还有其他类似的选择,但这些是我知道和喜欢的。 :)

              PS:因为我是新用户,所以不允许发布相应的链接。只是谷歌他们;第一次点击是正确的。

              【讨论】:

                【解决方案12】:

                您可以使用JavaRebel (commercial) 节省重新启动之间的时间。简而言之,此工具允许您在 Eclipse 中编写代码并立即获取代码更改。

                【讨论】:

                  【解决方案13】:

                  Spring Roo 不仅可以让您的项目快速启动(使用完善的架构),还可以减少您的持续维护。如果您正在考虑使用 Spring、servlet 和/或 JPA,那么您绝对应该考虑一下。它也很容易在安全性等方面进行分层。

                  【讨论】:

                    猜你喜欢
                    • 2016-04-04
                    • 2010-10-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-09-20
                    • 2018-02-07
                    • 2017-04-18
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多