决定使用Java技术的人应该使用-初学者

决定使用Java技术的人应该使用-初学者,java,Java,我对软件开发并不陌生,但在过去几年中,我几乎完全参与了web应用程序的开发,最有可能的是使用MySQL/PostgreSQL开发PHP 现在我正在改变焦点。我想开始用Java为桌面应用程序编程。关于语言的决定是出于以下原因:它是一种成熟的语言,有进入市场的空间,它是多平台的,资源丰富,并且有一些非常好的IDE(我使用的是netbeans 6.9) 我对OOP概念并不陌生(或者至少对其中的大多数概念都不陌生),但Java有大量的解决方案(技术、框架等等),我对此感到迷茫。无法决定采用什么样的解决方

我对软件开发并不陌生,但在过去几年中,我几乎完全参与了web应用程序的开发,最有可能的是使用MySQL/PostgreSQL开发PHP

现在我正在改变焦点。我想开始用Java为桌面应用程序编程。关于语言的决定是出于以下原因:它是一种成熟的语言,有进入市场的空间,它是多平台的,资源丰富,并且有一些非常好的IDE(我使用的是netbeans 6.9)

我对OOP概念并不陌生(或者至少对其中的大多数概念都不陌生),但Java有大量的解决方案(技术、框架等等),我对此感到迷茫。无法决定采用什么样的解决方案并从中学习

也就是说,让我们开门见山吧。我将描述软件目标,一些到目前为止我已经采用的东西,并希望有人能给我一些线索来填补这些混乱点

我的应用程序是一个小型企业应用程序。关于产品、销售、现金管理的常规知识。它需要运行在一个小型办公室中,带有一些计算机(不是完全独立的桌面应用程序)。并不是每个用户都能做任何事情。有些人有特权访问金融产品,有些人只销售,有些人只完成产品,等等

根据上面的高级定义,我们知道它将像客户机-服务器应用程序一样运行。一台服务器将安装到一台机器上,所有其他服务器将只安装客户端。我使用HSQL作为持久化的后端

希望使用Swing构建UI(根据操作系统保持主题化)。客户端的可能性包括发送电子邮件(不是直接发送,而是通过一些已设置的电子邮件客户端[Thunderbird,Outlook])和打印(到网络中的任何可用打印机)

为此,我使用桌面API

好的,最后我们得到的是我正在放松控制:您推荐哪种框架/技术使开发更快(基于可用表的预构建表单),并且尽可能模块化

正如我所说,不同的用户将拥有不同的权限,但我不想只是检查和禁用,而是希望将模块分开。不同的包装,或者类似的东西


EJB?布鲁杰?JavaBeans?奥斯基?Swing应用程序框架?我有点迷路了。任何帮助都将不胜感激。

如果你迷路了,请保持简单

对于您描述的那种桌面应用程序,您需要Swing和JDBC。如果您切换到web,请替换仅使用和servlet编写的JSP。要编写JSP,您必须了解HTML和CSS。您可以根据需要使用JavaScript对其进行修饰

你只需要这些就可以走很长的路

你提到的其他只是噪音,直到你变得更舒适:

  • EJB用于企业级应用程序。您可以将许多复杂的东西(如线程、对象池和生命周期等)留给应用服务器,并集中精力在称为企业JavaBean的分布式事务组件中表达您的业务逻辑。不需要启动
  • BlueJ是一个初学者IDE,旨在保护人们不受Java复杂性的影响。我不推荐
  • OSGi-用于web应用程序的模块化部署。不需要启动
  • Swing应用程序框架?我不熟悉它-我不写Swing。如果你指的是Spring,我认为它是一个很好的框架,但没有必要开始

  • 如果你迷路了,保持简单

    对于您描述的那种桌面应用程序,您需要Swing和JDBC。如果您切换到web,请替换仅使用和servlet编写的JSP。要编写JSP,您必须了解HTML和CSS。您可以根据需要使用JavaScript对其进行修饰

    你只需要这些就可以走很长的路

    你提到的其他只是噪音,直到你变得更舒适:

  • EJB用于企业级应用程序。您可以将许多复杂的东西(如线程、对象池和生命周期等)留给应用服务器,并集中精力在称为企业JavaBean的分布式事务组件中表达您的业务逻辑。不需要启动
  • BlueJ是一个初学者IDE,旨在保护人们不受Java复杂性的影响。我不推荐
  • OSGi-用于web应用程序的模块化部署。不需要启动
  • Swing应用程序框架?我不熟悉它-我不写Swing。如果你指的是Spring,我认为它是一个很好的框架,但没有必要开始

  • 这有点离题,但我认为无论如何都应该说出来

    我的应用程序是一个小型企业应用程序。关于产品、销售、现金管理的常规知识。它需要运行在一个小型办公室中,带有一些计算机(不是完全独立的桌面应用程序)。并不是每个用户都能做任何事情。有些人有特权访问金融产品,有些人只销售,有些人只完成产品,等等

    你在尝试一些非常有野心的事情。有无数现有的应用程序为小企业做这类事情,其中一些是家喻户晓的。是什么让你认为你可以做得更好?你凭什么认为自己能竞争

    您是Java新手,这一事实使您的雄心壮志倍增

    我的建议是:

    • 如果你梦想从中赚大钱,那就忘了它吧。你已经晚了10年了

    • 如果您这样做是为了某个客户、您的公司或您自己使用,那么他们/您最好使用现成的业务应用程序

    • 如果您这样做是为了“公共利益”,那么如果您加入一些现有的开源业务应用程序项目,您的劳动将会更加富有成效

    • 如果你这么做只是为了好玩。。。去争取吧(但我觉得这不是一个“有趣”的项目…)


      • 这有点离题,但我认为应该是这样