JPHP - uma implementação de PHP
JPHP é uma nova implementação para PHP que usa Java VM. Ele suporta muitos recursos da linguagem PHP (7.1+).
Como funciona? JPHP é um compilador como javac
, ele compila fontes php para bytecode JVM e então pode executar o resultado no Java VM.
- Site oficial: jphp.develnext.org
- JPHP incrível
Em produção
Desenvolvemos um novo IDE para iniciantes como Game Maker
ou Scirra Construct
. É baseado em JPHP, JavaFX, Java 8, Gradle e permite criar jogos e aplicativos de desktop para Linux, Windows e Mac (talvez Android e outras plataformas no futuro). O nome do projeto é DevelNext
(https://github.com/jphp-group/develnext-ide), o status atual e a versão do projeto é BETA. O projeto ainda não foi localizado em inglês.
Metas
JPHP não é um substituto para o mecanismo Zend PHP ou Facebook HHVM. Não planejamos implementar as bibliotecas de tempo de execução zend (por exemplo, Curl, PRCE, etc.) para JPHP.
Nosso projeto começou em outubro de 2013. Houve alguns motivos para isso:
- Capacidade de usar bibliotecas java em PHP (extensões próprias + outras)
- Substituindo a feia biblioteca de tempo de execução do Zend PHP por uma biblioteca de tempo de execução melhor.
- Usando a linguagem PHP não apenas na web
- Multithreading como em Java e C#.
- Strings Unicode (suporte total para UTF-8, UTF-16).
- Criação de aplicações GUI Android e Desktop em linguagem PHP.
Características
- PHP 7.1+ (e muitos recursos de linguagem do PHP 7.2, 7.3, 7.4).
- JIT (PHP 5.6 ~2,5x mais rápido, PHP 7.0 ~1,1x mais rápido, ~13% mais lento que PHP 7.4, bancada).
- Usando bibliotecas e classes java em código PHP.
- Unicode para strings (UTF-16, como em Java)
- Arquitetura de threading, soquetes e ambiente (como objetos sandbox na extensão runkit zend).
- GUI (JavaFX ou SWT)
- Sistema de cache incorporado para classes e funções
- Hot Reloading opcional para classes e funções
- Capacidade de usar no sistema operacional Android : jphp-android
O que o JPHP suporta no PHP 7.2?
- Todos os recursos, exceto RFC: Ampliação do tipo de parâmetro
O que o JPHP suporta no PHP 7.3?
- Todos os recursos, exceto RFC: Sintaxes Flexíveis Heredoc e Nowdoc
O que o JPHP suporta no PHP 7.4?
- Propriedades digitadas 2.0 (parcialmente, referências não são suportadas)
- Referências Fracas
- Arrow Functions 2.0 (+ sintaxe de múltiplas linhas)
- Permitir lançamento de exceções de __toString()
- Operador de atribuição de coalescência nula
- separador_literal_numérico
- Operador Spread em Expressão Matriz
Extensões Próprias
- Biblioteca Padrão - biblioteca padrão de tempo de execução própria
- Servidor HTTP (+Web Sockets +Multithread)
- GUI (JavaFX ou SWT)
- Git (baseado em JGit)
- JSoup - para analisar html no estilo jQuery.
- SQL (suporta MySQL, PostgreSQL, SQLite, Firebird).
- SSH - para trabalhar com o protocolo ssh.
- Yaml - para analisar e formatar yaml.
- Compress - para trabalhar com arquivos tar, gz, bz2, lz4, zip.
- HttpClient - cliente http com promessas.
- SemVer - para analisar versões no padrão SemVer.
- Mail - para enviar e-mails através de servidores SMTP.
- MongoDB - um driver para Mongo DB 3.0+.
Documentação
- Você pode encontrar a documentação mais recente da API aqui: jphp-runtime/api-docs
- Wiki aqui: leia
Primeiros passos (Olá, mundo)
- Instale o gerenciador de pacotes jphp (jppm), como instalar.
- Inicie o novo projeto (pacote jppm) com valores padrão:
- Execute no console
jppm start
.
Você verá Hello World
em seu console, as fontes deste programa estarão em src/index.php
.
- (Opcional) Para atualizar a versão jphp do seu projeto antigo:
Como executar benchmarks?
// via jphp
./gradlew bench
// via php
php -f bench/src/bench.php
Crie um SNAPSHOT a partir de fontes
Use gradle install
para construir e instalar os módulos e bibliotecas jphp no repositório local mavel. Depois disso, você poderá usar jphp em seus projetos como uma dependência maven.
org.develnext.jphp:jphp-<module>:<version>-SNAPSHOT