c# - 在 windows 中使用 java + php

标签 c# java php asp.net linux

我在想是否可以在不安装 Tomcat 的情况下桥接 java 和 php。我刚刚安装了 jdk17,我将 PATH 设置为 C:\jdk17\bin,我的第一个程序是这样的

<html>
<body>
<?php
  $system = new Java("java.lang.System");
  print "Java version=".$system->getProperty("java.version")." <br>\n";
  print "Java vendor=".$system->getProperty("java.vendor")." <p>\n\n";
  print "OS=".$system->getProperty("os.name")." ".
              $system->getProperty("os.version")." on ".
              $system->getProperty("os.arch")." <br>\n";

  $formatter = new Java("java.text.SimpleDateFormat","EEEE, 
    MMMM dd, yyyy 'at' h:mm:ss a zzzz");
  print $formatter->format(new Java("java.util.Date"))."\n";

?>
</body>
</html>

事实是它不起作用。浏览器上没有显示任何内容。我想我需要在 php.ini 中添加其他内容,但不知道我可以在文件中添加什么内容和位置。
对不起,我对所有这些都很愚蠢,谢谢你的帮助。

编辑:java 可以用 php 做什么?一些公司使用这两个,虽然我反对它认为 ASP 和 C# 应该做得更好。他们认为 LINUX 托管和存储是不可破解的吗?

编辑:顺便说一句,我使用 IIS 作为我的网络服务器,而不是传统的 Apache,感谢您的关注。

编辑:我想我现在对 Java 世界(Tomcat、apache、xxxsuits、ant、soap、xxxprotocol ....)完全感到困惑。有人可以发一篇简短的帖子来总结所有这些吗? [像米奇类(class)讲座一样容易理解的东西]拜托。

最佳答案

这是你的问题:

new Java("java.text.SimpleDateFormat","EEEE, 

我不知道在 PHP 上有任何类型的称为“Java”的对象,只需安装 Java 即可开箱即用。我认为您正在尝试执行 Java Bridge 集成,这意味着您需要下载 Java Bridge 发行版并在执行 PHP 页面之前执行 Java Bridge 服务器。

Java 与 PHP 不同,因为它是经过编译的。 PHP 被解释,这意味着你不编译它。 PHP解释器在运行时读取源代码,并对源代码进行解释,使其执行计算机真正理解的指令。这意味着您将源代码部署到生产服务器。这也意味着您只需更改源代码并重新运行该文件,它就会改变其行为。

Java 不同。源代码是在开发人员编写代码时在编译时解析的。编译在部署之前将源代码翻译成指令。这意味着未部署源代码。因此,Java 在运行时不会花费任何额外的时间将源代码转换为指令。这是在部署之前完成的。 Java 还使用称为 JIT(即时编译)的东西将字节码(java 指令)转换为 native 指令。 JIT 非常快。 Java 在执行时间上比 PHP 快得多。但是,如果您想更改行为,则必须更改源代码并重新编译它。 Ant 是一种帮助编译、打包和部署 Java 代码的工具。还有 Maven,但它的学习曲线更高。 C# 的大部分情况也是如此。它也是一种编译语言。

Java 支持结构非常庞大。有大量的 Java 工具和库是其他堆栈无法使用的。 Lucene、Spring、Hadoop、Tomcat、PDF 生成等。Java 带来的是访问大量代码,而这些代码仅使用 PHP 并不总是可行。例如,我有一个 PHP 网站,我正在生成条形码和这些条形码的 PDF 文件。我必须使用 Java 来生成它并让 PHP 通过 Tomcat 远程调用它。在 Java 中生成条形码、PDF 更容易,因为为此存在库。使用 Java 比使用 C 更容易(也更安全)。 PHP 擅长快速集成,因为它可以运行任何东西。

如果您想与 Java 快速集成,您可以从命令行执行 java 可执行文件。 PHP 可以 exec() 任何程序,从操作系统的角度来看,Java 没有什么不同。它只是一个可执行文件。好处是您不需要额外的工具,如 Tomcat、Servlet 等。缺点是 Java VM 会占用大量内存和启动时间。如果您正在执行大量 Java 虚拟机,您很容易耗尽服务器上的内存。这就是像 Tomcat 这样的东西可以提供帮助的地方,因为它可以在单个 Java VM 中运行一个长时间运行的程序,您可以通过套接字、HTTP 等与之交互。该单个程序可以同时处理大量请求。有很多集成选项。

http://php.net/manual/en/function.exec.php

关于c# - 在 windows 中使用 java + php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859917/

相关文章:

c# - 从未知位置读取文件?

c# - 如何避免人们使用我在文本框中支持的字符以外的其他字符?

java - Timepicker 的时间在屏幕旋转中丢失

php - php cron 作业可以运行多长时间/我做得对吗?

javascript - 我希望 html 选择的 ID 和名称具有不同的值

c# - IE10 Chakra JScript 引擎是否可以从 C# 独立访问?

java - 逐行读取输入

java - 将顶点着色器计算转换/移植到 Java

PHP:按值长度对数组进行排序

c# - wpf mvvm设置焦点数据网格的特定单元格