Jphp

Материал из Циклопедии
Перейти к навигации Перейти к поиску

JPHP — Это альтернативная реализация PHP для Java VM с поддержкой JIT. Проект начался в октябре 2013 года и за 4 месяца был реализовал компилятор php в байткод JVM. Язык поддерживается на уровне PHP 7.1, но без анонимных классов. По своей идеологии проект напоминает JRuby и Jython. JPHP распространяется бесплатно с использованием лицензии Apache 2.0.

Главные отличия JPHP от PHP :

Язык JPHP в отличии от PHP можно использовать не только для написания web приложений. JPHP можно использовать в качестве языка для написания GUI приложений с использованием JavaFX или Swt. Можно использовать для создание web серверов с использованием jetty. Или же для написания android приложений (пока в разработке). Для языка JPHP была написана среда разработки графических приложений develnext.

Примеры[править]

<syntaxhighlight lang="php" line="1">
<?
// web server
use php\http\HttpServer;
use php\http\HttpServerRequest;
use php\http\HttpServerResponse; // import classes from jphp-httpserver-ext

$server = new HttpServer(5000, "localhost");
$server->get("/", function (HttpServerRequest $req, HttpServerResponse $res) {
$res->charsetEncoding("UTF-8"); // set UTF-8
$res->body("<h1>Hello {$req->remoteAddress()}, from JPHP!</h1>");
});

$server->stopAtShutdown(true);
$server->run(); // start server on http://localhost:5000
</syntaxhighlight><syntaxhighlight lang="php" line="1">
<?
// JavaFX GUI Application
use php\gui\{ UXApplication, UXForm }; // import JavaFX classes from jphp-gui-ext

UXApplication::runLater(function () {
$form = new UXForm(); // create new form
$form->title = "Hello, World!!";
$form->size = [300, 200];
$form->show(); // show form
});
</syntaxhighlight><syntaxhighlight lang="php" line="1">
<?
// new API
use php\io\Stream;
use php\lib\str;
use php\util\Flow;
use php\util\Regex;

str::shuffle($str); // New API for primitive types

// API for Streams instead of fopen, fclose, etc.
Stream::getContents('path/to/file');

// API for regex instead of preg_*
$valid = Regex::match('^[a-z]+$', $str);

// Flow API for iterators and arrays
echo Flow::of([1, 2, 3])
->map(function($n) { return $n * 10; })
->reduce(function(&$r, $n) { $r += $n; });
</syntaxhighlight><syntaxhighlight lang="php" line="1">
<?
// multi threading

$thread = new Thread(function () {
$i = 0;

while (true) {
$i++;
echo $i, "\n";

sleep(2); // every 2 seconds
}
});

$thread->start(); // start thread
</syntaxhighlight><syntaxhighlight lang="php" line="1">
<?
// unicode
use php\lib\str;

// Unicode like in Java, UTF-16
// (from japan) programing language
$str = "プログラミング言語";

// Get length of the unicode string
echo str::length($str);

// Change symbol by index
$str[1] = '語';

echo $str;
</syntaxhighlight>

Ссылки[править]