Java 或 PHP 服务器端 Web 应用程序,为啥? [关闭]
Posted
技术标签:
【中文标题】Java 或 PHP 服务器端 Web 应用程序,为啥? [关闭]【英文标题】:Java OR PHP Server Side Web App and Why? [closed]Java 或 PHP 服务器端 Web 应用程序,为什么? [关闭] 【发布时间】:2011-04-27 14:01:27 【问题描述】:我正在创建一个涉及大量数据库访问以及解析和分析数据的 Web 应用程序,Java 是我最熟悉的语言,但最近有人告诉我应该考虑使用 php,因为它使数据库访问协议成为一种简单很多。
我对 PHP 没有任何了解,但如果它在功能、可移植性等方面成为更好的选择,我愿意学习使用。
Web 应用程序将针对 Oracle 数据库运行并使用 Flex 作为 GUI,请任何类似项目的经验以及使您选择的方法更好的原因或只是任何形式的意见。
【问题讨论】:
你是什么意思 - “数据库访问协议”?每种语言都使用 API,而不是原始协议。 对不起,我的意思是一般的访问程序 【参考方案1】:如果您熟悉 Java,我认为没有必要学习/使用 PHP。没有什么是 PHP 能做到的,而 Java 是做不到的。
确实,总的来说,PHP 是一种更加宽松的语言,并且可以用更少的代码更快地完成某些任务。 PHP 的内置抽象肯定比 Java 少。但是,如果您对 Java 感到满意,我会说坚持下去。
(我是作为 PHP 开发人员说的。)
【讨论】:
+1。我是一名 PHP 开发人员,我的一个好朋友使用 Java 开发同样高效的 Web 应用程序。 哈哈,谢谢大家,效率是我担心的一点,但这让人放心。感谢您的帮助 @Pekk,全面披露:我是一名 Java 开发人员,从未编写过一行 PHP。我只是喜欢继续污名.... @org 我不能声称自己对 Java 非常熟悉,但绝对不是。但据我所知,对于任何我想要简单、可移植且运行/部署和维护成本低的东西,我都会更喜欢编写良好的 PHP。但这已经在 SO...上讨论过很多次了... 我看到共享托管服务上的 PHP 引擎比 servlet 容器多得多。小事我会坚持 PHP。【参考方案2】:恕我直言,如果您了解 java,请使用 JPA。
如果您想学习新的快速原型设计,请使用 python/django。
【讨论】:
感谢 Paulo 看看 hibernate。 用 JPA 替换 Hibernate 这个词,因为您应该查看 API 而不是特定实现之一。【参考方案3】:嗯,这里真正的问题是您需要库来让您的工作更轻松。 JVM 作为一个平台比 PHP 有更多的选择,如果没有其他原因,您可以将您的应用程序与嵌入式语言混合。此外,Hibernate 作为 ORM(对象关系映射)非常棒,基本上可以将您的表视为 POJO。
如果您正在做很多“原始”的东西,我实际上喜欢使用 Sequel,它是一个 Ruby 库并且在 JRuby 上运行良好。总的来说,我发现人们喜欢 PHP 的鸭式输入/简洁代码完全可以通过 JRuby(或者对于 Python 爱好者类型的 Jython)在 Ruby 中复制。
除了你正在做的工作类型之外,最好的库将取决于你正在处理的模式的时髦性。您是否需要执行大量复杂的查询,一次从多个表中获取列?还是更像是“我需要为某个客户获取所有订单并将其显示在订单历史图表中”? ORM 更适合后者,这是 Web 应用程序所趋向的,但您提到解析和分析让我想知道它是否更适合前者。
我发现,Hibernate 为您提供了最大的灵活性。不审查就使用自动生成的东西不是一个好主意,但是如果你使用 Eclipse,有一个插件可以为你生成类。
使用 Java 的另一个原因:如果您查看 Web 应用程序的 Glassfish 容器,它已经为您构建了 JDBC 池,您可以查看池的统计信息和管理。如果您有很多数据库访问权限,这可能非常有用。
【讨论】:
我发现你断言“JVM 作为一个平台比 PHP 有更多的选择”是荒谬的!我同意 J2EE 或 J2ME 解决了 PHP 没有解决的许多领域,但没有解决 JVM。 JVM 有嵌入式语言。你是在告诉我,J2EE、Ruby、Python、Groovy、javascript、Scala 和 Clojure 的强大组合没有比 PHP 更多的选择吗? 您认为用 PHP 调用 Ruby、Python 并与之交互是不可能的。 Javascript,C,Perl,Prolog,第四,BASIC,Smalltalk,awk,cobol,comal,pascal,fortran,lisp,mono,eiffel,go,Algol,Oberon,haskell,pascal,scheme,Java,SQL.....不同之处在于它们位于 PHP 运行时之外并且不受调用运行时环境的限制【参考方案4】:我认为不需要 PHP,你可以使用 Java。如果你认为该应用程序是一个 Web 应用程序,那么你可以使用 PHP。所以你可以从任何地方访问它
【讨论】:
【参考方案5】:我认为,与 Java 相比,PHP 可以让你用更少的精力和更少的代码行来做很多 Web 事情(我只是在谈论我自己的经验 - 总是有人告诉你“使用 Java,PHP是垃圾”,会有人告诉你“PHP 比 Java 好得多”。不要听我们的,只是尝试一下,否则你永远不会知道!)。我做了很多 Java 的东西,但就 Web 应用程序而言,我对此并不满意。对于我们的大多数客户来说,也无法使用 Java,所以无论如何我没有太多选择。
那里有一些很好的 PHP 框架(例如 Yii,我最喜欢它)和作为教义或活动记录的非常好的规范。如果您必须学习该语言并且对敏捷开发感兴趣,还可以考虑 Ruby (Ruby on Rails) 或 Python (Django),因为这些都是城里很酷的孩子 :)
【讨论】:
【参考方案6】:为什么不同时使用? Quercus 将在 Java 中运行 PHP。您可以像调用原生 PHP 函数一样调用 Java 代码。你会得到最好的。而且您的 PHP 实际上会比在 Apache 下运行得更快。
我是一名 PHP 程序员,虽然 PHP DB 访问协议可能“更简单”(值得商榷),但我不会说它们更好。 Java 可以使用 DB 连接池,并且可以“持久化”数据、代码和对象。
【讨论】:
你不想同时使用这两种方法,因为如果你不需要的话,你可能不想给你的项目增加风险和复杂性。【参考方案7】:两种语言的语法、哲学和实现之间存在巨大差异。我建议“使数据库访问协议更简单”并不是选择一种语言而不是另一种语言的特别好的理由。
我的背景是 PHP 程序员,但我目前支持几个大型 Java Web 应用程序。如果您从同一点开始使用两种语言,那么我肯定会更喜欢 PHP 而不是 Java——但要全面讨论为什么需要比这里可用的更多时间和空间的原因。但是,如果您已经拥有强大的 Java 技能,那么您必须权衡获得适当的 PHP 技能水平的成本 - 由于这些系统工作方式的差异,您会发现您对 Java 的了解也一样多将障碍视为精通 PHP 的好处。
我建议您查看的其他因素是:
1) 架构 - PHP 需要比 Java 更好地理解底层协议(其中许多功能由库/框架提供)
2) 易于部署
3) 性能考虑 - 使用操作码缓存意味着用 Java 和 PHP 编写的简单程序之间的差异很小,因为前者通常是在非常复杂的框架中编写的,所以 PHP 通常可以具有优势。对于内存 mngmnt,它当然没有相同的复杂度
4) 总拥有成本——PHP 的易用性是一把双刃剑——你需要对 Java 有很多了解才能让程序运行起来,但是全世界和他的狗都认为他们可以用 PHP 编写好的代码。 IME 比 Java 程序员更难找到称职的 PHP 程序员。
【讨论】:
【参考方案8】:对我来说,这归结为性能。当您查看 PHP 时,它肯定已经部署在非常大的平台上(Facebook 一开始几乎只使用它),但通常它用于较小的平台。 Java,对我来说,当你看到它的可扩展性优势时,它是优越的,但只有当你知道你将要进行扩展时。
了解请求的底层生命周期非常重要。也就是说,了解 Java 容器是什么以及 Tomcat 服务器如何运行帮助我极大地理解了性能影响。
不要试图在“易于编码”或“数据库连接性”等单一属性上选择一个而不是另一个 - 它们的不同之处足以让您只关注几个“重要”的事情基于有偏见的信息进行选择。也就是说,如果您从表面上看,PHP 可以更轻松地连接到数据库——“呃!我必须安装一个 JDBC,这是什么???”等等——但这是懒人的借口。没有什么是 Java 不能做的,而 PHP 可以(我知道)。
对我来说,问题是您如何现实地(阅读:现实地)看到您的应用程序正在运行 - 您是否计划获得数千每小时访问次数,还是像大多数小项目一样每天点击一百次?
PHP 在小型项目中的好处是巨大的,特别是对于没有完全掌握 OOP 架构的程序员来说——但不要偷懒,直接使用 PHP,因为它更容易开箱即用。 Java 非常强大,只需学习它就可以教给您比您意识到的更多关于 OOP 和一般良好编程实践的知识(如果您像我一样来自自学领域)。
基本上,如果您必须学习其中一项,我会说分析您估计的项目负载加上启动时间,衡量您的效率和可扩展性要求,不断提出问题,然后决定哪个平台更好。
希望对您有所帮助....!
【讨论】:
以上是关于Java 或 PHP 服务器端 Web 应用程序,为啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章