2

Java 和 .NET 是两种旨在消除平台依赖性的语言。这是通过在代码和操作系统之间添加虚拟机/框架来实现的。

那么,在服务器端使用它有什么意义,因为所有网站都可以通过浏览器访问,并且与平台无关?使用它们有什么特殊原因吗?

4

9 回答 9

9

.NET 仅适用于 Windows 平台。Java 是两者中唯一一个与平台无关的。

由于多种原因,这些语言在服务器端占有重要地位:

  1. 许多处理问题子任务的库
  2. 这两个框架都是在考虑安全性的情况下构建的
  3. 它们是托管语言,要对软件进行典型的攻击要困难得多。
  4. 它们被认为是成熟的技术,它们受到了相当多的滥用并经受住了考验。
  5. 他们有行业支持。
  6. 两者都是面向对象的
    1. 这意味着可以通过使用可重用组件或第三方组件来开发网站。
  7. 两种语言都允许对非托管组件进行“沙盒化”(Java:JNI .NET:Boxing)[允许包含遗留组件]
于 2009-11-02T06:15:45.707 回答
7

实际上选择它们的原因几乎完全相反:

  • Java 的平台独立性意味着您不会被束缚在一个平台上,因此可以更灵活地选择最具成本效益的平台或最可靠的平台。即使您必须更改服务器平台,您也可以保持您的应用程序运行,因为旧平台不再受支持。
  • 选择 .NET 是因为如果您要将自己绑定到操作系统,Microsoft 是最大的参与者,因此是风险最小的选择 - 或者仅仅是因为公司通过 Exchange 等网关药物掉入了“全微软商店”的陷阱。一旦你在那里,.NET 就是微软希望你使用、支持并与他们所有当前工具集成的东西。
于 2009-11-02T06:44:45.090 回答
3

Java 和 .NET 对服务器端都有各自的优势。

例如,使用 .NET,您可以自由选择最适合您正在处理的应用程序部分的语言,并且所有这些 .NET 语言都可以协同工作。

因此,您可能希望将 F# 用于数据挖掘功能,使用 C# 处理数据库,使用非托管 C++(通过瘦托管 C++ 层)实现快速网络连接或系统调用,并且还有许多其他语言。.NET 目前与平台无关,但与语言无关。

Java 可以在多个不同的操作系统上使用,如果您要销售解决方案,这是有利的,因为您不关心客户使用的是什么操作系统。

现在 JVM 对语言的依赖性越来越小,Clojure 和 Scala 都脱离了它,所以 Java 现在变得更加有趣,用于设计应用程序。

于 2009-11-02T06:33:54.677 回答
2

它们虚拟化了底层系统,因此它们可以在不同类型的服务器操作系统上运行。

而且,它们被设计为通用应用程序开发系统,因此它们旨在运行在任何带有处理器的设备上。

如果您之所以问,是因为您不明白为什么人们会接受抽象层的开销,请记住 Java 和 .NET JIT 都是本机代码。

于 2009-11-02T06:18:32.067 回答
2

那么,在服务器端使用它有什么意义,因为所有网站都可以通过浏览器访问,并且与平台无关?

嗯,Web 应用程序不仅仅是为了好玩而呈现 HTML,它们在服务器端做一些事情,可能涉及与数据库对话、向 MOM 发送消息等。

使用它们有什么特殊原因吗?

这是一个部分答案,但我想至少在这里涵盖 Java 的情况。我可以首先争辩说 Java 是一种安全、健壮、垃圾收集、面向对象、高性能、多线程、解释型、架构中立、跨平台、符合流行语的编程语言……但这不会并没有真正回答你的问题。实际上,在服务器端使用 Java 最重要的是 IMO,您可以从标准化的企业 API(也称为 J2EE)中受益,这些 API 允许您以标准方式使用硬件、操作系统和软件供应商的独立性(这是合同谈判的一大优势)。换句话说,Java 非常适合大型组织几乎总是这样的异构环境,并且不会让您陷入困境。

于 2009-11-03T01:53:29.440 回答
1

虽然争取平台独立性非常好,但我想说 Java 和 .net 是常用的,因为有大量可用的框架使得开发企业级应用程序变得更加容易。对于 java 尤其如此,您可以选择令人难以置信的高质量技术,其中大多数技术足够灵活,可以满足大多数项目的需求,让您可以专注于应用程序的功能。

此外,Java 和 .net 无意引发一场激烈的战争,具有更好的开发工具支持,并且对于普通程序员来说更容易/更快地进行开发。

于 2009-11-02T08:43:34.300 回答
1

在早期的 Web 时代,主要是 Perl 和偶尔不喜欢 Perl 或想要更高性能的勇敢者使用 C++。然后 Sun 为 Java 开发了 JDBC 和 Servlet,然后是其他 J2EE 部分,Java 成为 Perl 的更高性能替代品,并且比 C++ 更容易。J2EE 带来了很多来自大公司的应用服务器产品,现在您拥有了一个庞大的 Java Web/应用服务器社区。

然后,在输掉与 Sun 的 J++/Java 战争之后,微软出现了,并使用 .NET 创建了类似的 Web 应用程序基础架构。使用 .NET,您的选择更少,同时也带来了所有的优点和缺点。

因此,我认为答案是体面的性能、安全和企业功能以及主要企业支持的结合。C++ 对大多数人来说太难和太危险了。Perl、PHP、Python 和 Ruby 有他们的粉丝,但没有企业支持。我不认为 Java/.NET 在虚拟机上这一事实对服务器端很重要。Java 最初使用虚拟机作为客户端。Sun 不得不努力制作一个快速的服务器虚拟机。我认为 Microsoft 使用 VM 来与 Sun 竞争,并使其更容易支持多种语言。看看 Google 的 Go 语言是否起飞将会很有趣,它可能在安全性和功率方面超过 Java 和 C#,但没有 VM。

于 2009-11-30T22:28:43.857 回答
0

浏览器无权访问这些框架可以访问的服务器资源(数据库、文件等)。你不可能有一个只有 javascript 的应用程序(并且做有意义的事情)

于 2009-11-02T06:17:56.643 回答
0

我这样理解您的问题:如果有更多其他舒适的方式来设置服务器,为什么选择 Java 或 .NET,因为客户端使用 HTTP 访问服务器?

您是对的,服务器操作系统或框架通常对客户端无关紧要。

然而,客户端也可以包含小程序或代码,然后需要与服务器上的对应方进行通信。然后 JSP 或 .NET 变得更有趣,因为您不必管理不同的客户端操作系统。然后网站变得易于扩展。

如果您想从第三方集成一些不错的图形和图表解决方案(Telerik、Dundas... 或其他任何东西 - 不是广告 - ),您还必须选择兼容的服务器基础架构来运行它们。

于 2009-11-02T06:36:45.387 回答