segunda-feira, 9 de junho de 2014

Letter to SensioLabs about the future of Symfony

To SensioLabs
P/  SensioLabs
(Fabien Potencier);

First, excuse me not writing in French.
Primeiramente, desculpe-me não escrever em francês.

Secondly, I have a radical idea about the future of Symfony, but I'm not sure if it is feasible.
Em segundo lugar, tenho uma idéia louca e radical sobre o futuro do Symfony, mas não estou certo se é praticável.

Symfony is not only a framework, but the crystallization of ideas and best practices (standards) of an entire community. I argue that it should not be restricted only to PHP. Absurd idea? Ever thought of translating it to Java?
O Symfony não é apenas um framework, mas a cristalização de boas práticas e idéias (padrões) de toda uma comunidade. Afirmo que não deveria estar restrito apenas ao PHP. Idéia absurda? Já pensou em traduzi-lo para Java?


In the Java environment, currently, several frameworks emerge, some fleeing the old platform J2EE, servlets etc. You've probably heard of Play. Another option, still attached to the old standard, is Grails, supported by Spring (http://spring.io/). While the Play uses Java and Scala Grails uses Groovy. The Play uses Netty as server and runs Java directly, withour the JVM. Grails, on the other hand, runs on the JVM, through the servlet container, J2EE etc. and uses Tomcat, JBoss etc. Finally, the latest version of the Play was rewritten in Scala, which I believe has not been a good choice.
No mundo Java despontam na atualidade vários frameworks, alguns fogem do velho padrão J2EE, servlets etc. Você já deve ter ouvido falar do Play. Outra opção, ainda presa ao velho padrão, é o GRails, amparado pela Fundação Spring. Enquanto que o Play utiliza Java e Scala o Grails utiliza Groovy. O Play usa Netty como servidor e roda Java diretamente, diferente do GRails que baseia-se na JVM, container de servlet, J2EE etc. e utiliza Tomcat, JBoss etc.  Finalmente, a última versão do Play foi reescrita em Scala, o que acredito não tenha sido uma boa escolha.

These changes show that the Java environment is in revolution. I realize that there is an eager market for new ideas. The platform J2EE is being questioned and Play will be the first of many to break with old practices.
Essas mudanças mostram que o ambiente Java está em revolução. Percebo que existe um mercado ansioso por novas idéias. O J2EE está sendo questionado e o Play será o primeiro de muitos a romper com as velhas práticas.

Meanwhile, the JavaScript language invades servers, obtaining optimal benchmarks. Node.js and competitors emerge as alternative frameworks. Remember the Apostrophe CMS written in Symfony 1.x? It has migrated to this new approach.
Enquanto isso, a linguagem Javascript invade os servidores, obtendo-se ótimos benchmarks. Node.js e concorrentes despontam como frameworks alternativos. Lembra-se do CMS Apostrophe escrito em Symfony 1.x? Migrou para essa nova abordagem.

In the midst of this war of languages ​​and frameworks, the Vert.x project. is born. In terms of benchmarks, it is a competitor to Node.js. Vert.x uses Netty as server and runs Java directly, but written in Java rather than Javascript. Like Play, Vert.x runs independent from Java J2EE platform, but linked to the JVM. But goes beyond, because it allows run simultaneously several languages ​​and codes and it is ready for the scalability of cloud computing (one vertx instance = one JVM -> several "verticles"). Different versions of the API let you run multiple languages ​​in parallel, in different verticles that communicate with each other. And there are versions for Javascript, Ruby, Groovy, Python, Closure. But there is still no version for PHP, but nothing prevents it.
Em meio a essa guerra de linguagens e frameworks, desponta o projeto Vert.x. Em termos de benchmarks, trata-se de um concorrente ao Node.js. Vert.x utiliza o servidor Netty. porém escrito em Java ao invés de Javascript. Como o Play, Vert.x  roda Java independente da plataforma J2EE, mas vinculado ao JVM. Porém vai muito além, pois permite rodar simultaneamente códigos de várias linguagens e está pronto para a escalabilidade da computação em nuvem (verticles e instâncias). Diferentes versões da API permite rodar várias linguagens, paralelamente, em diferentes instâncias que se comunicam entre si. E existem versões para Javascript, Ruby, Groovy, Python, Closure. Mas ainda não existe versão para PHP, mas nada impede isso.

Given the facts, and considering that a framework like Symfony should not attach themselves to just one language, I believe that the community should foster the criation of a Vert.x version to run PHP. More than that, create a Java version of Symfony would be an important step in continuing and strengthening of this framework. A framework, two languages. Not chic?
Diante dos fatos, e tendo em vista que um framework como o Symfony não deveria prender-se a apenas uma linguagem, acredito que a comunidade deveria fomentar versão do Vert.x para rodar PHP. Mais do que isso, criar versão em Java do Symfony seria um passo importante para a continuidade e fortalecimento desse framework. Um framework, duas linguagens. Chique não?

How libraries/bundles are decoupled in Symfony, translation for Java can be made gradually, starting with the core libraries. And while the Java version was not fully ready, libraries in PHP would be accessible through the Vert.x. Then the versions in Java and PHP would continue to evolve together.
Como as bibliotecas do Symfony são decoupled, a tradução para Java pode ser feita paulatinamente, começando pelas bibliotecas centrais. E enquanto a versão Java não estivesse totalmente pronta, as bibliotecas em PHP estariam acessíveis através do Vert.x. Depois, as versões em Java e PHP continuariam evoluindo em conjunto.

In conclusion, there is currently a gap of frameworks in the style of Rails/Symfony2.x, written in Java. I believe that this market would be willing to adopt Symfony or parts (libraries/bundles) in the Java version and/or PHP version, running through Vert.x. Thus, Symfony project would be strengthened, making sure not limited yourself to a single language.
Em conclusão, existe na atualidade uma lacuna de frameworks no estilo do Rails / Symfony escrito em Java. Acredito que esse mercado estaria propenso a adotar o Symfony ou partes dele (bibliotecas) na versão Java e/ou PHP rodando no Vert.x. Dessa forma, o projeto Symfony se fortaleceria, deixando-se de limitar-se a uma única linguagem.


Regards.


Links:
http://www.playframework.com/
https://grails.org/
http://netty.io/
http://www.apostrophenow.com/
http://vertx.io/


Vert.x - definition and features
Vert.x definição e características


"Vert.x is a polyglot, non-blocking, event-driven application platform that runs on the JVM.
Some of the key highlights include:

Polyglot. You can write your application components in JavaScript, Ruby, Groovy, Java or Python, and you can mix and match several programming languages in a single application.

Simple actor-like concurrency model. Vert.x allows you to write all your code as single threaded, freeing you from many of the pitfalls of multi-threaded programming. (No more synchronized, volatile or explicit locking).

Vert.x takes advantage of the JVM and scales seamlessly over available cores without having to manually fork multiple servers and handle inter process communication between them.

Vert.x has a simple, asynchronous programming model for writing scalable non-blocking applications that can scale to 10s, 100s or even millions of concurrent connections using a minimal number of operating system threads.

Vert.x includes a distributed event bus that spans the client and server side so your applications components can communicate easily. The event bus even penetrates into in-browser JavaScript allowing you to create effortless so-called real-time web applications.

Vert.x provides real power and simplicity, without being simplistic. Configuration and boiler-plate is kept to a minimum.

Vert.x includes a powerful module system and public module registry, so you can easily re-use and share Vert.x modules with others.

Vert.x can be embedded in your existing Java applications.

" (http://vertx.io/manual.html#verticle)


PS: I'm not a Vert.x developer.
PS: Não sou desenvolvedor do projeto Vert.x.

(Sent in 2014-06-09)
(Enviada em 2014-06-09) 

Nenhum comentário:

Postar um comentário