我是Java的新手,刚刚开始使用一些简单的代码.
我在Linux机器上,使用vim编辑器,使用javac进行编译,使用'java'运行程序.
基本上,暂时,我正在寻找使用Java构建桌面应用程序.我听说过Java(EE/SE/ME),我对它们的假设是:
但是,我开始知道它们之间的区别在于"规范",来自Java SE和Java EE之间的区别
所以我的问题是,我是否可以使用Java EE创建桌面应用程序?或者它们仅用于创建Web应用程序?
Java EE是一大堆技术,它们共同构成了构建企业应用程序的或多或少的一致框架.
现在,在企业中,服务器应用程序被大量使用,因此许多技术专注于服务器功能和/或多用户.服务Web请求只是其中的一部分,还有处理消息(JMS)和服务器远程方法调用(远程EJB)的功能.
像GlassFish或JBoss AS这样的完整Java EE实现并不常用于桌面应用程序(除非它是用于个人桌面的应用程序,但这是基于浏览器的).
然而...
几乎所有构成Java EE的技术都可以在Java SE之上独立使用,并与图形用户界面结合使用.
例如,Java EE中有一个名为JPA的ORM框架,它使得在数据库中存储对象变得相当容易.数据库(可能是嵌入式数据库)当然可以与桌面应用程序一起使用,这通常是有意义的.例如,电子邮件应用程序可能将邮件存储在此类数据库中.JPA明确地在其规范中有一节关于在Java SE中可用的部分.
在Java EE中还有一个用于依赖注入的框架,称为CDI.除此之外,还可以轻松隔离依赖关系并掌握它们.它非常适合MVC图形应用程序,例如在控制器中获取模型.与JPA一样,CDI明确支持Java SE.
作为最后一个示例,Java EE默认情况下需要存在JMS,但在这种情况下,JMS甚至不是特定的Java EE子规范.Java EE只需要存在JMS提供程序,因此Java SE自然可以使用JMS(在JMS中甚至只有合法的API才能在Java SE中使用).一种方式的消息传递可以是架构模式的一部分,这种架构模式在桌面应用程序中与在服务器应用程序中一样可用(例如,桌面工具包Cocoa使用它集中).
桌面应用程序中有更多可用的Java EE技术,但我希望上面给出了一些想法.
好吧,伙计们,我是 Java 的新手,现在我已经变得有点“老”了。所以我能弄清楚。
就是这个 :
Java 开发唯一需要的东西是 Java 编译器,如果我们安装 JDK,我们就会得到它,而运行 Java 实用程序所需的东西是 JVM。因此,这些是我们进行任何类型的 Java 开发(无论是桌面、Web 还是移动)所需的唯一东西。
那么什么是 Java SE、Java EE 和 Java ME 呢?
这些是上面提到的两个东西(Java编译器+ JVM)加上一组库(SE用于桌面,EE用于Web,ME用于移动)。因此,如果我们中的任何一个人有足够的时间并且拥有 Java 编译器 + JVM,我们就可以为所有这些功能构建我们自己的库。
但遵循“不要重新发明轮子”的概念,并且因为使用多年来一直平稳运行的库/工具会更好,所以我们都使用 SE、EE 和 ME 提供的工具/库。
所以答案是,我可以只用 Java 编译器(Linux 机器上的 /usr/bin/javac)开发任何类型的应用程序。唯一的问题是,将会有很多“重新发明轮子”的事情。所有 Java 应用程序都在同一个 JVM 上运行(无论哪种类型),对于 linux(/usr/bin/java)。