Java 和 .NET 是两种旨在消除平台依赖性的语言。这是通过在代码和操作系统之间添加虚拟机/框架来实现的。
那么,在服务器端使用它有什么意义,因为所有网站都可以通过浏览器访问,并且与平台无关?使用它们有什么特殊原因吗?
Java 和 .NET 是两种旨在消除平台依赖性的语言。这是通过在代码和操作系统之间添加虚拟机/框架来实现的。
那么,在服务器端使用它有什么意义,因为所有网站都可以通过浏览器访问,并且与平台无关?使用它们有什么特殊原因吗?
.NET 仅适用于 Windows 平台。Java 是两者中唯一一个与平台无关的。
由于多种原因,这些语言在服务器端占有重要地位:
实际上选择它们的原因几乎完全相反:
Java 和 .NET 对服务器端都有各自的优势。
例如,使用 .NET,您可以自由选择最适合您正在处理的应用程序部分的语言,并且所有这些 .NET 语言都可以协同工作。
因此,您可能希望将 F# 用于数据挖掘功能,使用 C# 处理数据库,使用非托管 C++(通过瘦托管 C++ 层)实现快速网络连接或系统调用,并且还有许多其他语言。.NET 目前与平台无关,但与语言无关。
Java 可以在多个不同的操作系统上使用,如果您要销售解决方案,这是有利的,因为您不关心客户使用的是什么操作系统。
现在 JVM 对语言的依赖性越来越小,Clojure 和 Scala 都脱离了它,所以 Java 现在变得更加有趣,用于设计应用程序。
它们虚拟化了底层系统,因此它们可以在不同类型的服务器操作系统上运行。
而且,它们被设计为通用应用程序开发系统,因此它们旨在运行在任何带有处理器的设备上。
如果您之所以问,是因为您不明白为什么人们会接受抽象层的开销,请记住 Java 和 .NET JIT 都是本机代码。
那么,在服务器端使用它有什么意义,因为所有网站都可以通过浏览器访问,并且与平台无关?
嗯,Web 应用程序不仅仅是为了好玩而呈现 HTML,它们在服务器端做一些事情,可能涉及与数据库对话、向 MOM 发送消息等。
使用它们有什么特殊原因吗?
这是一个部分答案,但我想至少在这里涵盖 Java 的情况。我可以首先争辩说 Java 是一种安全、健壮、垃圾收集、面向对象、高性能、多线程、解释型、架构中立、跨平台、符合流行语的编程语言……但这不会并没有真正回答你的问题。实际上,在服务器端使用 Java 最重要的是 IMO,您可以从标准化的企业 API(也称为 J2EE)中受益,这些 API 允许您以标准方式使用硬件、操作系统和软件供应商的独立性(这是合同谈判的一大优势)。换句话说,Java 非常适合大型组织几乎总是这样的异构环境,并且不会让您陷入困境。
虽然争取平台独立性非常好,但我想说 Java 和 .net 是常用的,因为有大量可用的框架使得开发企业级应用程序变得更加容易。对于 java 尤其如此,您可以选择令人难以置信的高质量技术,其中大多数技术足够灵活,可以满足大多数项目的需求,让您可以专注于应用程序的功能。
此外,Java 和 .net 无意引发一场激烈的战争,具有更好的开发工具支持,并且对于普通程序员来说更容易/更快地进行开发。
在早期的 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。
浏览器无权访问这些框架可以访问的服务器资源(数据库、文件等)。你不可能有一个只有 javascript 的应用程序(并且做有意义的事情)
我这样理解您的问题:如果有更多其他舒适的方式来设置服务器,为什么选择 Java 或 .NET,因为客户端使用 HTTP 访问服务器?
您是对的,服务器操作系统或框架通常对客户端无关紧要。
然而,客户端也可以包含小程序或代码,然后需要与服务器上的对应方进行通信。然后 JSP 或 .NET 变得更有趣,因为您不必管理不同的客户端操作系统。然后网站变得易于扩展。
如果您想从第三方集成一些不错的图形和图表解决方案(Telerik、Dundas... 或其他任何东西 - 不是广告 - ),您还必须选择兼容的服务器基础架构来运行它们。