Node.js por JAVA

205 views
Skip to first unread message

Marcelo Ribeiro

unread,
Oct 26, 2013, 1:24:03 PM10/26/13
to nod...@googlegroups.com
Olá Pessoal,

Estou estudando a algum tempinho o NodeJS, trabalho atualmente com JAVA+Spring+Hibernate, embora sejam tecnologias bem difundidas e estáveis, tudo é muito trabalhoso, muita gente diz que o node não resolve todos os problemas, mas eu gostaria de saber se alguém poderia citar exemplos em que o node não atenderia frente ao JAVA.

1) Uma vez que tudo é JS o código da aplicação estaria vulnerável quando a APP estiver no servidor do cliente? Diferente do JAVA que eu publico somente os *.class

2) Manipular banco de dados no node, consigo usar algum ORM abstraindo o tipo de banco a ser usado? Exemplo no JAVA seria o Hibernate.

3) Consigo enviar e-mail e manipular arquivos do sistema operacional?

4) Em relação a performance existe alguma pesquisa comparativa entre JAVA e Node?

5) Eu gostaria de usar uma única tecnologia para WEB, valeria a pena deixar o JAVA pelo do Node?

6) Posso usar no mesmo projeto (app) JAVA e Node? Teria que rodar os dois em portas separadas?

Desde já agradeço os comentários.

Abs.
Marcelo

Luciano Ramalho

unread,
Oct 28, 2013, 8:26:51 AM10/28/13
to nod...@googlegroups.com
2013/10/26 Marcelo Ribeiro <marcelo...@sysline.inf.br>:
> Estou estudando a algum tempinho o NodeJS, trabalho atualmente com
> JAVA+Spring+Hibernate, embora sejam tecnologias bem difundidas e estáveis,
> tudo é muito trabalhoso,

De fato, é o mais deprimente de Java: a trabalheira desnecessária
imposta ao programador.

> muita gente diz que o node não resolve todos os
> problemas, mas eu gostaria de saber se alguém poderia citar exemplos em que
> o node não atenderia frente ao JAVA.
>
> 1) Uma vez que tudo é JS o código da aplicação estaria vulnerável quando a
> APP estiver no servidor do cliente? Diferente do JAVA que eu publico somente
> os *.class

Existem ofuscadores de código para JavaScript que tornam o fonte tão
ilegível quanto um bytecode (e para bytecode Java, existem várias
ferramentas de engenharia reversa). Experimente tentar ler o
código-fonte JavaScript de alguma aplicação do Google, como o Gmail, o
Google Maps. Vai lá, tenta!

> 2) Manipular banco de dados no node, consigo usar algum ORM abstraindo o
> tipo de banco a ser usado? Exemplo no JAVA seria o Hibernate.

Sim, existem vários mecanismos de abstração de bancos de dados para Node.

> 3) Consigo enviar e-mail e manipular arquivos do sistema operacional?

Claro que sim.

> 4) Em relação a performance existe alguma pesquisa comparativa entre JAVA e
> Node?

Desconheço, mas qualquer especialista em desempenho e escalabilidade
pode te dizer o seguinte: o fator crítico nunca é a escolha da
linguagem, e sim a arquitetura do sistema.

> 5) Eu gostaria de usar uma única tecnologia para WEB, valeria a pena deixar
> o JAVA pelo do Node?

Se você quer fazer tudo em JavaScript, pode usar o Node. Se quiser
fazer tudo em Java, pode usar o GWT:

http://www.gwtproject.org/

O GWT um dos frameworks de desenvolvimento de aplicações Web ricas do
Google. No GWT todo o código que você escreve é Java. A parte que vai
rodar no navegador é convertida automaticamente para JavaScript.

> 6) Posso usar no mesmo projeto (app) JAVA e Node? Teria que rodar os dois em
> portas separadas?

Claro que sim, aliás essa pode ser uma ótima opção. Basta usar uma
arquitetura orientada a serviços, o que em 2013 significa sistemas
conversando através de APIs REST com JSON, muito mais simples,
elegante e rápido que aquela coisa ridícula de SOAP.

> Desde já agradeço os comentários.

Seja bem, vindo.

[ ]s
Luciano

PS. Java não é uma sigla, então não precisa escrever GRITANDO ;-)





>
> Abs.
> Marcelo
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "NodeJS
> Brasil" dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para nodebr+un...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Luciano Ramalho
Twitter: @ramalhoorg

Professor em: http://python.pro.br
Twitter: @pythonprobr

André Caribé

unread,
Oct 28, 2013, 8:42:31 AM10/28/13
to nod...@googlegroups.com

> 6) Posso usar no mesmo projeto (app) JAVA e Node? Teria que rodar os dois em
> portas separadas?

Não tem como manter dois serviços rodando na mesma porta. O que você pode fazer, caso queira "rodar" na mesma porta é usar um servidor de proxy reverso, para por exemplo: na porta 80 poder responder tanto o serviço em Java como o Node.


--
@andrecaribe +55 (71) 8711.5527
http://www.andrecaribe.com.br

Luciano Ramalho

unread,
Oct 28, 2013, 8:47:29 AM10/28/13
to nod...@googlegroups.com
Eu nem mencionei a questão da porta porque é um conceito super básico
de arquitetura... Em uma arquitetura em rede com vários sistemas, cada
um atende por uma porta e/ou por um IP. É como funciona o TCP/IP.
Claro que é possível usar proxies para apresentar externamente a
ilusão de vários servidores na mesma porta, mas não é o que acontece
de fato.

Grato pela complementação, André!

[ ]s
Luciano


2013/10/28 André Caribé <decoc...@gmail.com>:

diego nunes

unread,
Nov 1, 2013, 6:41:27 AM11/1/13
to nod...@googlegroups.com
Marcelo, é legal entender também que o Node tem uma
aplicação-ideal limitada. Ele não é uma silver bullet e se você quiser
fazer sistemas para web evitando o Java, o ideal seria tentar algo com
PHP e Python, que são voltados pra isso. Apesar de o Node poder
atender a requisições web normais e funcionar como um servidor web e
de apliação, o caso de uso mais comum (e onde ele demonstra as maiores
vantagens) são usos de alta concorrência, com muitíssimos usuários
simultâneos, ou necessidade de comunicação com baixíssima latência via
socket.
Para servir arquivos estáticos, o ideal é um servidor web normal.
O "nginx", por exemplo, é bem rápido e pode fazer o serviço de
reverse-proxy: ele atende às chamadas estáticas e repassa para o node
somente o que for necessário. Para a aplicação, depende do caso de
uso: nem sempre Node.JS é a melhor escolha. Então analise com calma e
precisando de mais ajuda é só falar.

2013/10/26 Marcelo Ribeiro <marcelo...@sysline.inf.br>:
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "NodeJS
> Brasil" dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para nodebr+un...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
diego nunes
dnunes.com

principe...@gmail.com

unread,
Nov 1, 2013, 7:49:54 AM11/1/13
to nod...@googlegroups.com
Nenhuma linguagem resolve tudo, isto eh fato.

1) Uma vez que tudo é JS o código da aplicação estaria vulnerável quando a
> APP estiver no servidor do cliente? Diferente do JAVA que eu publico somente
> os *.class

Depende da seguranca do seu servidor...

> 2) Manipular banco de dados no node, consigo usar algum ORM abstraindo o
> tipo de banco a ser usado? Exemplo no JAVA seria o Hibernate.
>

Sim, procure no npmjs.org

> 3) Consigo enviar e-mail e manipular arquivos do sistema operacional?
>


> 4) Em relação a performance existe alguma pesquisa comparativa entre JAVA e
> Node?
>

Ate o presente momento nao

> 5) Eu gostaria de usar uma única tecnologia para WEB, valeria a pena deixar
> o JAVA pelo do Node?

Nao, e nao existe isto de uma unica tecnologia web, por exemplo estou desenvolvendo um projeto onde precisopegar dados direto do arduino, o node foi muito melhor pra mim do q java ou php.

> 6) Posso usar no mesmo projeto (app) JAVA e Node? Teria que rodar os dois em
> portas separadas?

Sim, portas separadas...

Alan Hoffmeister

unread,
Nov 1, 2013, 7:59:08 AM11/1/13
to nod...@googlegroups.com
>> 4) Em relação a performance existe alguma pesquisa comparativa entre JAVA
>> e
>> Node?
>>
>
> Ate o presente momento nao

http://www.techempower.com/benchmarks/

principe...@gmail.com

unread,
Nov 1, 2013, 8:35:24 AM11/1/13
to nod...@googlegroups.com
teste de serielizacao de json nao eh exatamente um teste de performance neh.


Ricardo Tomasi

unread,
Nov 1, 2013, 8:55:12 AM11/1/13
to nod...@googlegroups.com
São mais 5 benchmarks diferentes além da serialização, em dois tipos de hardware, e com todos os dados disponíveis pra análise. É um benchmark muito bem feito, o único defeito é não exibir o consumo de memória, que com certeza é gigantesco no Java comparado com o resto.

Que a JVM é muito rápida todos sabem, não é nenhuma surpresa bater o node e mesmo servers escritos em linguagens como c++ e lua. Existe uma dezena de considerações além de performance bruta pra selecionar uma linguagem/plataforma, tanto que a maioria das startups de hoje ainda usam RoR e Python, que estão bem abaixo no ranking de performance. O que elas tem de vantagem é agilidade, complexidade & manutenção de código, facilidade de recrutamento, etc, da mesma maneira que o node tem seus trade-offs.

<rant>
Acho importante tentarmos manter o nível de discussão um pouco mais elevado e evitar esse tipo de comentário inflamatório, é um dos motivos pelos quais a maioria prefere participar dos grupos internacionais.
</rant>

Marcos Sampaio

unread,
Nov 1, 2013, 9:21:51 AM11/1/13
to nod...@googlegroups.com
É preciso levar em consideração que em 99,9% dos sistemas a linguagem não é o gargalo. Performance só é um bom argumento pra usar node.js se você trabalhar em um site tipo a globo.com, ou algo do gênero. Acho que node.js tem muitas outras qualidades além da performance.
Marcos Oliveira Sampaio

principe...@gmail.com

unread,
Nov 1, 2013, 9:27:19 AM11/1/13
to nod...@googlegroups.com
eu creadito q o boom do node seria o real time....nenhuma outra linguagem consegue fazer realtime tao bem quanto o node.js, agora acho q as outras coisas ficam melhor em outras linguagens...

Bruno Barros

unread,
Nov 1, 2013, 9:46:04 AM11/1/13
to nod...@googlegroups.com
Tinha lido a um tempo atrás um post falando sobre Vert.x vs Node.js e realmente embora a JVM ajude na questão performance, o consumo de memória era bem superior dentro obviamente do mesmo cenário que era algo bem simples. request/response. Porém a conclusão é sempre quem fez e porque fez e pra que tipo de problema esse benchmark se dá. Visto que isso muda bastante dependendo do cenário ou problema a ser atacado com a linguagem ou framework.

A experiência que tive com Node.js numa API que escrevi para um jogo multiplayer para iOS foi boa (questão performance), porém a longo prazo tive um pouco de dificuldade na questão manutenção e nisso Java é impecável pra mim, porém acho Node.js uma opção muito boa na questão produtividade. É aquele trade-off bacana. Hoje eu costumo misturar apps real time usando Rails e Node.js e tem se mostrado uma boa opção quando o código não tende a crescer muito. Abre-se mão de alguns pontos para ganhar em outros.

Obviamente comparar Java com Javascript seria bem tenso néh? =/

abs

Bruno




2013/11/1 Marcos Sampaio <mosa...@gmail.com>



--
sds

- Bruno Barros
@brunosoab

Augusto Pissarra

unread,
Nov 1, 2013, 9:49:08 AM11/1/13
to nod...@googlegroups.com
Um grande apelo para usar o Node é poder desenvolver tb em Javascript (todos os benefícios e malifícios disto tb). Quer queira ou não é uma linguagem que ganha muitos adeptos dia após dia…


Augusto Bernardo
(55 11) 98851-6629
www.highdesign.com.br

email_hd


 


Alan Hoffmeister

unread,
Nov 1, 2013, 9:52:47 AM11/1/13
to nod...@googlegroups.com
Bruno, quais foram as dificuldades na manutenção?

--
Att,
Alan Hoffmeister
D6E3140F-20BD-431B-B0B2-3C114F6FEF23[73].png

principe...@gmail.com

unread,
Nov 1, 2013, 11:50:24 AM11/1/13
to nod...@googlegroups.com
fazendo um adendo ao augusto, alem de js ser mais leve, eh totalmente orientado a eventos....coisa q poucas linguagens sao   e isto facilita bastante...
D6E3140F-20BD-431B-B0B2-3C114F6FEF23[73].png
Reply all
Reply to author
Forward
0 new messages