Quando o Java é uma boa opção para desenvolvimento web? [fechadas]

35

Quando o Java é uma boa opção para desenvolvimento web?

Por favor, não diga "Quando você tem uma equipe de desenvolvimento que conhece apenas Java".

Gulshan
fonte
5
Pode-se perguntar como, qual recurso faz do Java a minha linguagem de desenvolvimento web?
Abimaran Kugathasan
11
Uma pequena desvantagem do uso de Java é a falta de uma estrutura dominante defacto no mercado. Nenhum framework baseado em Java realmente chegou ao topo da pilha ainda (como o Struts tinha antigamente). Pessoalmente, inclino-me para o Spring MVC se estiver trabalhando com um aplicativo Spring ou Grails para qualquer outra coisa (como você pode chamar Java a qualquer momento).
Martijn Verburg
De repente, obtive 25 pontos desta pergunta!
Gulshan
estamos considerando o software de código aberto existente?
jonathan
2
"como o Struts tinha antigamente": o que há de errado em usar o struts hoje (além de não estar mais na moda)?
Giorgio

Respostas:

35

Dadas as muitas estruturas disponíveis, a maturidade da plataforma etc., estou tentado a dizer "quase sempre". Então, aqui estão algumas razões pelas quais você não deve usar Java:

  • como uma loja pura de MS, você provavelmente prefere fazê-lo da maneira .net
  • se você precisar do webhoster mais barato possível, provavelmente só terá o PHP à sua escolha
  • se você quiser fazer o mais rápido possível, Ruby on Rails, Grails ou Django provavelmente são mais adequados às suas necessidades
  • se sua equipe de desenvolvimento conhece apenas XYZ, onde XYZ! = Java, é melhor usar XYZ
user281377
fonte
7
Portanto, usamos Java se não somos uma loja da MS, temos a intenção de gastar dinheiro com hospedagem, ter tempo suficiente para desenvolver usando Java e ter desenvolvedores Java. Tudo bem?
precisa saber é o seguinte
Gulshan: sim, você pode colocá-lo dessa forma
user281377
3
Existem muitas outras razões como É inchado, corporativo e é Java (o último pode ser ignorado se você usar o Scala ou algo mais para a JVM).
Raynos
11
@ Raynos, então você recomenda o que?
2
@ ThorbjørnRavnAndersen realmente depende de quais são os requisitos. Se os requisitos forem genéricos (não de nicho), use qualquer plataforma que seja mais conveniente para seus desenvolvedores e servidores.
Raynos 2/10/11
19

Java é usado em sites pequenos e médios. O ponto crucial é que há muito menos hospedagem gratuita para sites Java do que para PHP, o que significa que, a menos que você tenha recursos suficientes para hospedar seu próprio servidor, provavelmente não escolherá Java.

Observe que, com o Java EE 6, especialmente o perfil da web, há muitas tecnologias padrão incluídas que podem criar aplicativos da web muito poderosos sem precisar codificar muito. Infelizmente ainda não é mainstream.

Observe que isso mudou recentemente com o Google Application Engine, que permite implantar aplicativos da Web Java padrão (com algumas restrições) na nuvem gratuitamente para sites de baixo a médio tráfego.

user1249
fonte
Em todos os casos, não hospedarei meu site em uma hospedagem gratuita na web. Mas a pergunta existe um problema com a hospedagem web paga em java? É muito caro, por exemplo?
Goma
11
@ saeed, não como tal. A maioria das pessoas simplesmente escolhe a opção mais barata e codifica em conformidade.
O jave é muito caro do que outros, por exemplo? existe uma hospedagem compartilhada para java?
Goma
@Saeed, existem alguns motivos técnicos para você não poder agrupar tantas JVMs em uma única caixa Linux e Windows quanto criar instâncias LAMP compartilhadas, o que significa implicitamente que uma JVM hospedada é mais cara que uma LAMP hospedada. O Google usa uma JVM diferente, o que significa que eles podem oferecê-la gratuitamente.
@ Thorbjörn: Você tem algum link sobre como o Google faz isso? Ouvi dizer que eles usam o Jetty, mas não sei muito mais sobre a solução deles.
Jonas
12

Quando sua plataforma é UNIX / Linux e você precisa de um rico conjunto de ferramentas, como Mapeamento de Objeto / Relacional, Segurança, Orquestração complexa de Serviços Web, etc.
(Não estamos falando de sites simples, estamos?)

Sorantis
fonte
11
Você também pode obter esse material das linguagens de script - veja Python e SQLAlchemy. Até o Rails usa um ORM (ActiveRecord) e possui boa segurança.
Brian D.
3
De fato, mas eu não acho que eles sejam tão poderosos quanto o Hibernate, Spring Framework, BPEL.
Sorantis
11
O que há de errado com Java em não-UNIX / Windows.
Tom Hawtin - defina
2
Nada. Mas no Windows você tem .NET
Sorantis
2
-1 Você está fazendo parecer que nenhuma das alternativas tem ferramentas decentes disponíveis.
Raynos
9

Toda vez que outra equipe de Java me irrita, desabafo pesquisando perguntas como esta. Deixe-me reiterar. Sou um desenvolvedor do lado do cliente e já faz quase cinco anos. Trabalhei em sites que variam de microsites únicos de conteúdo, a sites tão grandes quanto a Sears, a sites mais sofisticados do tipo de aplicativo, onde é necessário um conhecimento realmente profundo da interface do usuário. Eu lidei com Rails, PHP, formulários da web .net (ew), .net MVC (muito melhor) e um conjunto de soluções Java para desenvolvimento da Web acompanhado por desenvolvedores e equipes que foram todos desastres completos para lidar. Eu também escrevo um pouco de Python e estou começando a cavar o Django.

Minha experiência com equipes Java tem sido universalmente terrível. As ferramentas são sempre uma PITA. Os desenvolvedores nunca querem acreditar que fizeram algo errado e fazê-los reinvestigar seu próprio território, uma vez que você descartou um problema do seu lado, é como arrancar dentes. A primeira vítima de lidar com equipes Java na minha experiência é o tempo de desenvolvimento convertido em tempo de e-mail, escrevendo várias explicações longas sobre por que o problema definitivamente está chegando ao fim. O HTML geralmente não é problema deles, a menos que você realmente queira algum controle sobre ele. É provável que tudo acabe no inferno porque você realmente deseja mover alguns mergulhos de nível superior.

Há coisas sobre o idioma que eu não gosto, mas acho que o verdadeiro problema é a cultura e o fato de a aceitação ser tão difundida que você tem muita mediocridade no meio. A cultura que suspeito surge da maneira como o Java é comercializado. Escreva uma vez, implante em qualquer lugar. Tradução: "Você só precisa aprender uma coisa!" As pessoas que acham isso atraente basicamente querem empunhar o Java como um martelo gigantesco para cada unha, com o mínimo de aprimoramento de suas habilidades no que diz respeito ao desenvolvimento da web.

Portanto, se você tem desenvolvedores que conhecem Java e outras linguagens, mas ainda preferem Java, eu diria que sim, vá em frente se parecer que é a solução certa. Mas se você tem desenvolvedores Java que conhecem Java e tudo o mais está apenas cumprindo os critérios para realmente torná-lo um ponto de referência em seu currículo, faça com que eles criem um aplicativo simples com uma variedade de páginas semi-complexas no final do HTML e tente isso teste simples. Quebre um pouco de HTML. Tente fazê-los descobrir o que está errado. Se o problema imediato que eles começarem a resolver for desviar a culpa deles, mantenha-os longe do desenvolvimento da web! O desenvolvedor da Web é multidisciplinar e requer interesse ativo no campo para ser bem-sucedido. Não é um lugar para pessoas que querem apenas manter o conhecimento de um idioma e ficam mais horrorizadas com os problemas do que interessados ​​em resolvê-las.

Não estou afirmando que o próprio Java é a raiz da incompetência e ouvi dizer que o Spring é bom. Tenho certeza de que há equipes Java competentes por aí. Só não encontrei um ainda e não acho que seja uma coincidência. Eu acho que a Sun tem muito a ver com isso. Também acho que administrar equipes da web como ou sob departamentos de TI tem muito a ver com isso.

Erik Reppen
fonte
11
Eu tenho os mesmos problemas que você descreve, mas nunca pensei que pudesse depender da linguagem de programação. Você acha que as pessoas que programam, digamos, PHP, são mais abertas e flexíveis?
21412122Preço
PHP é 100% sobre o desenvolvedor e menos sobre uma cultura em torno dele. Eu não amo sua falta de consistência no centro, mas confiaria no trabalho de uma equipe PHP de nível intermediário para desenvolvimento web de uma maneira que não confiaria em uma equipe Java. Ajuda que é improvável que um desenvolvedor PHP experiente tenha trabalhado com qualquer coisa, menos na Web e provavelmente ele foi contratado para obter experiência em graus / credenciais. O problema do Java pode ser em parte devido à rigidez inerente da linguagem, mas sinceramente acho que é mais sobre a natureza de como os desenvolvedores Java são treinados, as soluções Java são adotadas e os desenvolvedores Java são contratados.
Erik Reppen
11
@Erik Reppen: Eu acho que você está generalizando demais a sua experiência: não acho que as equipes Java sejam piores que as que trabalham em outras linguagens ou, pelo menos, não sejam piores que a média. Conheço duas lojas muito boas que trabalham muito com Java. O primeiro, faz projetos em Java e Ruby (cerca de 50% cada). O segundo funciona principalmente em Java, mas já fez projetos individuais no Scala e no Common Lisp.
Giorgio
@Giorgio Eu perdi isso, mas trabalhei com outras pessoas lidando com o back-end via .NET, Rails, Java e PHP. Não estou contando experiências únicas com outras linguagens e desenvolvedores de baixa qualidade certamente não são exclusivos do Java. Além disso, como eu disse, estou 100% certo de que existem equipes Java muito competentes por aí. Alguém tem que não gostar disso, mas na OMI, não estou generalizando demais. Há um problema com os desenvolvedores Java no nível médio. É um fenômeno cultural na minha experiência. Uma coisa tão desagradável que parei de trabalhar com lojas Java, a menos que conheça os desenvolvedores em questão.
precisa
5

Java é perfeitamente adequado para sites pequenos. É possível fazer com que as páginas JSP funcionem muito rapidamente com um servidor Java como o Tomcat , por exemplo.

Embora, na minha experiência, Java seja mais comum em sites grandes, onde há uma maior necessidade de processamento complexo no servidor - nesse caso, você encontrará estruturas Java mais sofisticadas usadas como o JavaServer Faces (JSF).

É importante observar que, historicamente, uma instalação Java completa não estava disponível em muitas configurações baratas de hospedagem na web, o que pode explicar a prevalência de outras linguagens como o PHP nesses ambientes.

Mikera
fonte
Isso significa que hospedar aplicativos da web java é muito caro? ou não é tão barato quanto o PHP, por exemplo? você pode me dar um bom link de host weh para java para que eu possa ver os preços? Eu fiz uma pesquisa, mas não sei qual deles tem os preços padrão, para que eu possa ter uma visão geral sobre isso.
Goma
11
hospedar aplicativos da Web Java não é caro, você só precisa de um provedor de hospedagem que permita executar aplicativos Java. Qualquer ambiente de hospedagem Linux em que você obtenha uma conta de login na máquina ficará bem - eu pessoalmente uso o Ubuntu no Amazon Web Services para minha hospedagem Java.
Mikera
2

Os principais motivos para o uso do Java no desenvolvimento da Web se resumem ao seguinte:

  • O cliente exige. Para melhor ou pior, alguns clientes têm "listas de tecnologia aceitas" e, se você propõe algo que não consta dessa lista, é melhor ter uma explicação realmente boa do porquê - e por que algo da lista não pode ser usado.
  • Desenvolva no Windows, implemente no Unix. A maioria das máquinas de desenvolvimento é Windows, algumas são Mac e muito poucas são Linux - exatamente como seria de esperar das máquinas clientes comuns. No entanto, no servidor, é provável que você veja alguma forma de Unix como é um servidor Windows. O Java é provavelmente o mais próximo a escrever uma vez implantado em qualquer lugar (não é perfeito, mas melhor do que algumas alternativas).
  • Escolha de gerenciamento. Vamos ser sinceros, escolher Java em relação a outra linguagem terá mais a ver com a capacidade de encontrar programadores e substituir membros da equipe que saem do projeto do que basear-se apenas nos méritos da linguagem.
Berin Loritsch
fonte
Sobre o nº 2: configure seu IDE corretamente. O Eclipse tem essa idéia estúpida de padronizar alguma codificação de arquivo Windowish que pode causar estragos em um servidor Linux.
precisa saber é o seguinte
Na verdade, eu estava me referindo a suposições sobre onde certos arquivos residem e a qualquer momento que você precisa interagir com o sistema operacional.
Berin Loritsch
"C é provavelmente o mais próximo a escrever uma vez implantado em qualquer lugar".
Raynos
@ Raynos, se isso fosse verdade. Infelizmente, a menos que você tenha as mesmas bibliotecas padrão em todas as plataformas, isso não pode ser verdadeiro. A linguagem C principal é muito portátil, eu digo a você. No entanto, qualquer coisa específica do SO (como criar um encadeamento, abrir um soquete ou criar um elemento de interface do usuário) possui algo na API que não pode ser portado com uma simples recompilação. Com Java, não é necessário recompilar, muito menos alterar o código para usar a nova API do sistema.
Berin Loritsch
@BerinLoritsch, você quer dizer que, após 40 anos, não temos APIs genéricas para itens específicos de SO que funcionam em várias plataformas com uma simples recompilação? Eu posso imaginar que isso seja verdade nos anos 80.
Raynos
2

Tecnicamente falando:

  • Se você pode definir uma arquitetura que seja acessível ao otimizador de hot-spot.
  • Se você antecipar a necessidade da sobrecarga massiva de OO que o Java impõe.

Se eu estivesse iniciando um aplicativo Web, usaria o Ruby on Rails e projetaria de tal maneira que os pontos de acesso pudessem ser trocados quando o RoR atingir seu limite de escala de desempenho.

Java tem um odor definido de COBOL e "codificadores de baixo custo usam Java", e os fiascos da Oracle não estão ajudando a reputação. Se você tiver escolha , escolha um idioma que atraia os principais desenvolvedores.

Paul Nathan
fonte
"escolha um idioma que atraia os principais desenvolvedores." Exemplo?
Eldelshell
11
@Ubersoldat: Go, Ruby, Clojure, Haskell, Python são linguagens que fazem isso.
Paul Nathan
O Python é bom porque na verdade consegue muitas das coisas que o Java finge. E não é difícil fazê-lo funcionar bem com outras pessoas quando você deve resolver um problema com outro idioma. Eu não sei sobre Ruby, mas os desenvolvedores do Rails são uma espécie de crapshoot na minha experiência. É o efeito JQuery. As pessoas que sabem o que estão fazendo gostam disso porque são rápidas e eficazes nas mãos certas. As pessoas que não sabem o que estão fazendo gostam disso porque não precisam saber muito.
amigos estão dizendo sobre erik
@ Erik Reppen: Por outro lado, o Ruby como linguagem possui um design mais agradável e consistente do que o Python. Realmente acho que essas comparações de idiomas geralmente são uma questão de gosto e tende a favorecer os idiomas com os quais eles estão mais familiarizados.
Giorgio
0

É simples: use Java quando o desempenho do back-end for uma grande preocupação. Há mais sobrecarga ao codificar, mas o código será executado em 1/200 a 1/500 do tempo - literalmente. Php, Ruby e outras linguagens de tipo dinâmico sempre serão muito mais lentas que os servidores java ou .net.

A maioria das soluções para a web não precisa disso. O Twitter não abandonou o Rails até que eles começaram a atingir popularidade, por exemplo.

Rian Fowler
fonte
-1

Não é o único motivo, mas com a crescente popularidade da criação de sites com front-ends sofisticados, semelhantes a aplicativos, enquanto a lógica faz 'coisas' de volta no servidor - nenhum motivo deve ser necessário para explicar por que o Java é pelo menos igual a qualquer outro opção no final do servidor. Mas no final do cliente, se algum javascript se transformar rapidamente em um pesadelo de manutenção de código e usando o GWT para manter essas coisas à distância, para que você possa codificar em Java, você pode ter o melhor dos dois mundos com seu servidor fazendo o trabalho pesado e o processador de um cliente, dando-lhes a 'experiência'. Aprenda a integrá-lo a algo como jQuery e você poderá ter todo o colírio para os olhos que desejar.

Não há nenhum tipo de especialista nas alternativas, mas se alguém puder apresentar uma com o mesmo tipo de flexibilidade e amplitude, feliz em saber disso.

nomaderWhat
fonte
+1 para jQuery :)
abel
2
-1 para "javascript se transforma em pesadelo de manutenção de código", este é apenas um efeito colateral de permitir que os desenvolvedores Java escrevam javascript sem nenhum treinamento ou aprendendo JavaScript. e a principal desvantagem do GWT é que é uma abstração com vazamento, boa sorte para que ele tenha um bom desempenho em dispositivos móveis.
Raynos
O problema com a rigidez do Java, IMO, é que você acaba com muitos desenvolvedores que não entendem por que o código deles é organizado à força da maneira como está em primeiro lugar. Quando tudo deve parecer POO, às vezes o resultado inevitável é que nada realmente é.
Erik Reppen
-1

A principal razão pela qual eu escolheria o java é se você precisar usar transações distribuídas, o que pode ser uma grande preocupação para muitas empresas. No entanto, você ainda pode usar sua linguagem de script favorita para desenvolvimento na Web e delegar apenas o trabalho ao java quando precisar de transações distribuídas / rápidas.

Brian D.
fonte
-1

Acredito que seria quando seu aplicativo será muito complexo, com muitas pessoas desenvolvendo-o, com muitos módulos complexos, lógica de negócios complexa e ele precisará se comunicar com muitos outros aplicativos corporativos.

De qualquer forma, você também pode desenvolver no Grails, que oferece muitos recursos interessantes, facilita muito o desenvolvimento e amadurece muito rápido.

Eldelshell
fonte
-1

Java é bom, mas se o desempenho não for de importância crucial, você poderá obter os mesmos resultados com menos esforço em outras linguagens.

Kevin Cline
fonte
2
"desempenho não é crucialmente importante" quando você deve escrever em C e assembly, não em Java.
Raynos
Benchmarks versus experiência, os sites Java foram os piores desempenhos da minha experiência como desenvolvedor do lado do cliente. Isso pode ser um problema de nível médio de talento mais do que uma coisa de linguagem.
amigos estão dizendo sobre erik
2
@ErikReppen: Definitivamente uma coisa de talento. A velocidade do Java em um servidor perde apenas para o C / C ++. PHP ou Rails simplesmente não podem ser comparados. Mas as bibliotecas de Java e algumas das ferramentas facilitam demais a perda de toda essa velocidade, fazendo coisas inutilmente complicadas.
Zan Lynx
-1

Java é uma linguagem de tipo estaticamente e é mais barata que as outras linguagens de tipo estaticamente usadas para desenvolvimento na Web, como C # e VB.net, se a sua empresa não possui uma assinatura do MSDN. Linguagens de tipo estaticamente são boas para projetos de médio a grande porte, regras de domínio complexas e muito código de back-end, porque você pode organizar melhor suas classes e IDEs ajudarão você a encontrar erros no seu código.

Com linguagens de tipo dinâmico, como PHP, Python, Ruby, seu desenvolvimento será muito mais rápido, mas você terá que testar seu código muito melhor. Se você não tem muito tempo e dinheiro e seus requisitos mudam muito rapidamente e não precisa fazer cálculos muito complexos, as linguagens dinâmicas são muito melhores.

Виталий Олегович
fonte
-2

Segurança

O principal motivo para as grandes empresas escolherem o Java em detrimento de outras soluções é porque é considerado muito mais seguro.

Isso ocorre principalmente porque é suportado por uma empresa tão grande (agora oracle).

Deve-se levar em consideração que o Java oferece um nível muito alto de segurança e excelente suporte e análise (embora exista um preço).

mrwooster
fonte
7
Uhh ... e a segurança vem magicamente da própria linguagem ou o quê?
Mchl
11
Você está ciente de que a Oracle NÃO é o único fornecedor de contêineres de servlets Java, não é?
Mchl
6
Guerra santa! Luta Luta!
abel
2
@Mchl Parte disso vem do idioma ou melhor, da sua VM. Quantas vezes você viu hacks de saturação de buffer voltados para servidores de aplicativos Java? Simplesmente não vale o esforço. Dito isto, o Java é considerado mais seguro pela "indústria" do que é, e uma falsa sensação de segurança pode ser contida.
precisa saber é
11
Meu ponto aqui foi que você precisa diferenciar entre Java como linguagem e ambientes de tempo de execução Java. Não há nada que torne a linguagem Java mais ou menos segura do que qualquer outra linguagem. As JVMs, por outro lado, são projetadas (entre outras coisas) para executar o bytecode Java 'sandbox', mas sua segurança depende da implementação específica. Bom ponto sobre falsa sensação de segurança.
Mchl