Java Time Savers

Ove*_*own 12 java frameworks

我发现这个问题的本质非常适合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程序都很难看.正如我在帖子中提到的那样,我将要关注文件交换和我必须自己实现的有限数据库功能(但是要谨慎 - 我知道并发和ACID问题).

仍然是一个社区维基需要改进.

Ben*_*Ben 8

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

而且,根据我的经验,远离GUI构建者.这似乎是一个很好的协议,但我喜欢一直保持对我的代码的控制.

  • 它改变了我编程的方式 - 你可以从一个漂亮的小核开始并插入不同的代码块(使用依赖注入).这些块是可配置的(您可以覆盖默认值) - 当您与不同的客户打交道时非常有价值.(设计变更!)您可以编写一个基本格式化程序,并使用注入核心程序的类扩展它.你没有*在任何地方使用春天,这就是它的美丽.此外,如果您创建一组基本功能,您可以在代码中链接(但仍然可以使用弹簧配置),它将不会那么重... (2认同)

Joh*_*ner 6

Apache Commons有很多时间保存您最有可能需要并且可以重用的代码.

http://commons.apache.org/


Vin*_*vic 6

  • Joda所有日期和时间操作的时间.

  • 一个休眠iBATIS的在数据库处理数据

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


Jon*_*Jon 5

一个明智的构建和配置平台将帮助您一路走来,Ant:

http://ant.apache.org/

或Maven(最好):

http://maven.apache.org/

特别是随着项目的规模,以及项目中的模块数量的增加.


djn*_*jna 4

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

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

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

2)。期待迭代开发、完善和重新设计。不要指望在使用任何一个组件之前就单独“完成”它。换句话说,不要采用纯粹自下而上的方法来开发组件。当您使用它们时,您会发现更多信息,当您实现它们时,您会发现更多关于可能性的信息。

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

3)。尽早测试,经常测试。使用 JUnit(或等效工具)。您已经获得了低级组件的模拟,因此您可以测试它们。

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

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

优点:更容易排除错误。

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