As 5 tecnologias baseadas em Java para aprender em 2008

Caramba, é um circo de horrores!!!

Eu sei muito bem quem eu sou e quem costuma freqüentar o GUJ para tirar dúvidas e/ou debater assuntos interessantes sem se comportar como um troll também já sabe quem eu sou.

Agora, se você quiser que eu me posicione sobre o assunto, ok.

Primeiro, eu acho que você é disléxico (http://en.wikipedia.org/wiki/Dyslexia), pois você não consegue construir uma frase sequer sem manter uma coerência interna que dê sentido ao que você quer expressar, além de não conseguir entender o que o Phillip e o Carlos estão tentando argumentar (embora eu ache que você sequer leia o que eles tenham escrito).

Segundo, JavaScript é uma linguagem OO, como o CV e o Phillip falaram. Linguagens OO trabalham com OBJETOS, que podem ser especificados/construídos/montados/… usando a tradicional dupla classes+interfaces ou usando protótipos. JavaScript se encontra no grupo de linguagens OO baseados em protótipos (http://en.wikipedia.org/wiki/Prototype-based_languages), cujo nome também pode ser Linguagens baseadas em instâncias (instâncias? o que era instância mesmo senão um objeto?). Se você não souber o que é um protótipo (http://en.wikipedia.org/wiki/Prototype), lá vai uma definição rapidinha: protótipo é todo objeto que pode ser clonado para criação de novos objetos ou para permitir que seu comportamento seja estendido/reescrito.

E, terceiro, Javascript é uma linguagem apenas, não define um runtime próprio, como Java, por exemplo. Isso significa que você pode escrever um código JavaScript para executar sobre o runtime do seu browser, ou para executar sobre a CLR (JScript.NET), ou sobre a JVM (Rhino) ou mesmo criar seu próprio runtime para executar aplicações em JavaScript. Logo, comparar Java com JavaScript no tocante a “runtimes” não faz o menor sentido, uma vez que JS pode usar a JVM como runtime.

Bom, é isso.

[update]:

Duas coisas para se pensar:

  • C++ não possui interfaces. Então seria C++ uma linguagem não-OO?
  • Java é 100% OO. Seria possível fazer isso então:

int a = 2; int b = a.add(3); assertEquals(b, 5); ??

Tivesse respondido assim logo na primeira vez teria sido muito mais proveitoso. Só estou dizendo que é melhor prezar pela paz. Se o cara está falando algo que vc acha estúpido, responda como nesse seu último post ou simplesmente ignore.

Existem pessoas (eu inclusive) que vão ficar argumentando ad eterno sobre um conceito que eles acreditam. Então se o cara está falando que a folha da árvore é azul e vc acha que é verde, diga isso pra ele educadamente. Se depois disso ele continuar falando que é azul, ignore-o. Talvez ele seja daltônico ou tenha realmente encontrado uma espécie de planta com folha azul no quintal da casa dele…

[quote=saoj]Tivesse respondido assim logo na primeira vez teria sido muito mais proveitoso. Só estou dizendo que é melhor prezar pela paz. Se o cara está falando algo que vc acha estúpido, responda como nesse seu último post ou simplesmente ignore.

Existem pessoas (eu inclusive) que vão ficar argumentando ad eterno sobre um conceito que eles acreditam. Então se o cara está falando que a folha da árvore é azul e vc acha que é verde, diga isso pra ele educadamente. Se depois disso ele continuar falando que é azul, ignore-o. Talvez ele seja daltônico ou tenha realmente encontrado uma espécie de planta com folha azul no quintal da casa dele…[/quote]

Falou tudo.

[quote=saoj]Tivesse respondido assim logo na primeira vez teria sido muito mais proveitoso. Só estou dizendo que é melhor prezar pela paz. Se o cara está falando algo que vc acha estúpido, responda como nesse seu último post ou simplesmente ignore.

Existem pessoas (eu inclusive) que vão ficar argumentando ad eterno sobre um conceito que eles acreditam. Então se o cara está falando que a folha da árvore é azul e vc acha que é verde, diga isso pra ele educadamente. Se depois disso ele continuar falando que é azul, ignore-o. Talvez ele seja daltônico ou tenha realmente encontrado uma espécie de planta com folha azul no quintal da casa dele…[/quote]

Se você quer fazer um discurso de Paz, fale por ela então, mas se sua sutileza ir no termo ironico a ponto de me chamar de daltônico eu afirmo que você desconhe as cores da Paz.


[color=red]Você esta como espectador, concorda ou não mas ao menos não fique encima do muro ou faça mera politicagem sobre o que devemos ou não aceitar sobre as questões ao Forum.
[/color]

Não falei que vc era daltônico, apenas que duas pessoas podem descordar sobre um determinado assunto e ambas estarem corretas. De qualquer maneira me desculpe…

[quote=saoj][quote=Marcio Duran]
Se você quer fazer um discurso de Paz, fale por ela então, mas se sua sutileza ir no termo ironico a ponto de me chamar de daltônico eu afirmo que você desconhe as cores da Paz.
[/quote]

Não falei que vc era daltônico, apenas que duas pessoas podem descordar sobre um determinado assunto e ambas estarem corretas. De qualquer maneira me desculpe…[/quote]

Sergio, agora tu viu como funciona. Todos foram ja tentaram ser educados na argumentacao, mas nao é facil.

]['s

[quote=saoj]
Não falei que vc era daltônico, apenas que duas pessoas podem descordar sobre um determinado assunto e ambas estarem corretas. De qualquer maneira me desculpe…[/quote]

Não perca mais tempo sendo educado com esse cara…

[quote=Daniel Quirino Oliveira]

É desenvolvedor Java há 8 anos, trabalhando atualmente como analista de sistemas para a EDS do Brasil,já tendo participado de diversos projetos Java EE para o setor de transportes, financeiro, e-commerce e telecomunicações. Além disso é coordenador do GUJ ( www.guj.com.br ) e costuma compartilhar seus conhecimentos em seu blog ( http://nullability.org).

Bom, é isso.

[update]:

Duas coisas para se pensar:

  • C++ não possui interfaces. Então seria C++ uma linguagem não-OO?
  • Java é 100% OO. Seria possível fazer isso então:

int a = 2; int b = a.add(3); assertEquals(b, 5); ??[/quote]

Bom o Daniel voltou ao assunto, e deu um exemplo de C++ em sua tese de JavaScript, tudo bem…
valeu a tentativa…

Ai vai a minha então sobre C++ e Java.

Algumas Linguagem (como C++)permitem que uma classe estenda mais do que uma classe.Essa capacidade é conhecida como “herança múltipla”.A razão pela qual os criadores de java decidiram não permitir a herança múltipla é que pode acabar bagunçando o código.

Já ouviu falar no cenário conhecido como o “Diamante da Morte”

Em obserção peço que sinceramente,leia o Capítulo 2:Orientação a objetos.
kATHY SIERRA
BERT BATES

[quote=saoj][quote=Marcio Duran]
Se você quer fazer um discurso de Paz, fale por ela então, mas se sua sutileza ir no termo ironico a ponto de me chamar de daltônico eu afirmo que você desconhe as cores da Paz.
[/quote]

Não falei que vc era daltônico, apenas que duas pessoas podem descordar sobre um determinado assunto e ambas estarem corretas. De qualquer maneira me desculpe…[/quote]

Aceito !!!
Concordo que uma resposta inteligente merece meu respeito.

Abraçoss

Só pra mim tentar acompanhar o raciocínio, pq me perdi:

1 - O que tem a ver JavaScript com esse tópico?
2 - O que leva alguém a achar que JavaScript NÃO é OO?
3 - Se JavaScript tem características “fracas” em OO, como fizeram as bibliotecas Dojo Toolkit, Ext JS e etc…?

As 5 tecnologias baseadas em Java para aprender em 2008

Hm, para mim:

:!: JRuby
:!: JPA
:!: Groovy
:!: JSR 314
:!: Rhino

Das outras que foram citadas não tenho um bom conhecimento para avaliá-las ainda :stuck_out_tongue:

[quote=djemacao]Só pra mim tentar acompanhar o raciocínio, pq me perdi:

1 - O que tem a ver JavaScript com esse tópico?
2 - O que leva alguém a achar que JavaScript NÃO é OO?
3 - Se JavaScript tem características “fracas” em OO, como fizeram as bibliotecas Dojo Toolkit, Ext JS e etc…?[/quote]

Você tem real observação, mas o que estou discutindo foi o que o Carlos Villela não soube explicar sobre sua argumentação em dizer sobre Java e JavaScript ou melhor foi infeliz em tentar falar algo que tecnicamente deixou a desejar.

Abaixo isso responde as suas colocações sobre a forma como um MODERADOR DO GUJ, se apresenta para explicar ao Forum.

Carlos Villela é um dos coordenadores do GUJ, trabalha com Java há 6 anos, e atualmente explora a JVM também com Ruby, através do projeto JRuby. Há três anos trabalha na ThoughtWorks de Londres, a conceituada consultoria que tem como seu cientista-chefe ninguém mais que Martin Fowler. Atualmente desepenhando o papel de arquiteto em grandes projetos, Villela vem falar um pouco sobre as velhas e as novas arquiteturas, os grandes mitos e metodologias ágeis.

[quote]
rpffoz wrote:Ou melhor você consegue usar? para mim o O.O do JS é um PHP querendo ser O.O…[/quote]

[quote]
Por:Carlos Villela
Voce ja usou a OO do JavaScript pra saber? Me parece que nao, ou vc teria notado que poucos sistemas de objetos em linguagens populares sao tao limpos quanto os prototipos do JavaScript. A OO do JavaScript da um pau na do Java e C#, se vc me perguntar.[/quote]

[quote]
rpffoz wrote:js nem empacotamento tem! nem se quer tem package… js não foi feito para um nível tão abstrato.[/quote]

Se nao sabe, nao fale merda. http://www.lixo.org/archives/2007/09/14/javascript...put-everything-in-a-namespace/

…que estao fundamentalmente errados e baseados em erros fatuais tao grosseiros que eu mal sei por onde comecar. Deixa eu tentar mais uma vez pra ver se vc pega por osmose: existem 4 coisas diferentes:

A linguagem Java (que tambem inclui um pouquinho da API java.lang)
As plataformas Java (JVMs, compiladores, todas as outras APIs, etc)
A linguagem JavaScript (que inclui alguns metodos primitivos, como parseInt, parseFloat, etc)
As plataformas JavaScript (VMs, ofuscadores, compiladores, APIs, etc)

Vou repetir pela ultima vez, e o contexto dos próximos paragrafos não envolve as plataformas, e sim somente as linguagens. Somente as linguagens, ok? Nada de plataforma, nada de coisas que vc realmente executa em um computador. As linguagens nao mudam se vc usar papel e caneta, pedra, martelo e talha ou um Cray. Ok? Elas sao a parte teorica da coisa. Sintaxe, gramatica, etc. Entendido? Voce nao precisa de um computador pra discutir os meritos ou defeitos de uma linguagem de programacao. Entendido? Mesmo? Otimo. Entao, so pra reiterar mais um pouquinho, nos estamos discutindo a linguagem Java e a linguagem JavaScript. Beleza? Vamos la:

  • Java não é 100% orientada a objetos, por possuir tipos primitivos como int, float, char, etc.

  • JavaScript possibilita construções OO mais elaboradas do que Java, já que vc pode adicionar e remover atributos e métodos de qualquer objeto presente no sistema, além de ter funções como “1st-class citizens” (http://en.wikipedia.org/wiki/First-class_object), o que eh extremamente importante.

  • JavaScript suporta closures, duck-typing, uso de objetos como arrays associativos e um sistema de OO por prototipos, coisas nao ainda disponiveis (ou que nao podem ser adicionadas, devido ao tamanho da diferenca conceitual) em Java.

Por esses motivos, eu disse que JavaScript eh uma linguagem melhor que Java.

[quote=saoj][quote=Marcio Duran]
Se você quer fazer um discurso de Paz, fale por ela então, mas se sua sutileza ir no termo ironico a ponto de me chamar de daltônico eu afirmo que você desconhe as cores da Paz.
[/quote]

Não falei que vc era daltônico, apenas que duas pessoas podem descordar sobre um determinado assunto e ambas estarem corretas. De qualquer maneira me desculpe…[/quote]

MOMOMOMOMONSTER KILL! :twisted: :twisted:

Na minha opinião, Javascript pode ser OO :), as vezes até mais que Java.

Me admira a disposição e paciência que vocês têm de discutir com alguém que simplesmente não quer entender o que vocês têm para explicar, por melhores que sejam as explicações, como está sendo o caso. É a típica thread buraco-sem-fundo, de onde claramente não vai sair nada de útil, só vai sair desgaste.

É nada, agora qualquer pessoa que ler esse tópico vai entender que JavaScript não é só aquela linguagem que você faz funções de validação de campos em formulários HTML.

Pô, Maurício, será que precisa de um tópico desse tamanho, com esse nível de agressividade e com tantos comentários non-sense, pras pessoas aprenderem isso? Ainda mais um assunto que já foi falado inúmeras vezes nesses anos todos…

De qualquer forma, acho que essa discussão toda gera (muito) mais prejuízo do que benefícios.

Olá pessoal.

primeiro, estamos realizando discussões num fórum virtual, onde as frases podem ser mal entendidas devido a subjetividade implicita, já que não temos como prever “expressões físicas e corporais”. Contando com isto, devemos ter o cuidado para não agredir verbalmente e nem realizar certos tipos de brincadeiras a não ser que a pessoa em questão seja íntima, o que simplifica as coisas.

segundo, a melhor coisa é refletir, perdoar e esquecer as discussões aqui geradas. Bola pra frente.

Terceiro, sobre Javascript:

JavaScript é OO baseado em protótipos e como vivemos num mundo real: toda linguagem tem suas vantagens e desvantagens.

As diferentes técnicas para se programar OO com JS nos permite usar a melhor abordagem de acordo com a necessidade. Por exemplo: Não vou criar métodos nested numa classe se possuo muitos métodos complexos, o que afetaria a construção deste objeto, gerando overhead. Mas para classes base, menos específica ou logicamente mais simples, vale a pena.

Sou programador JS há 7 anos. Adoro este linguagem, no entanto, acho difícil uma progressão rápida e robusta sem uma adoção padrão por parte dos fabricantes de browsers. Obviamente não me refiro ao Firefox ou Ópera.
Gostaria muito de ver uma padronização. O que mais afeta o programador é a falta de transparência nos diferentes browsers, comportamentos específicos, implementação mais custosa (baixo desempenho), etc. Aí o programador é obrigado a usar um toolkit para facilitar, e depois de um certo tempo usando, ele percebe que a amarração é tanta que ele precisa largar o toolkit adotado…Obviamente existes toolkits interessantes, como ExtJS, no entanto, não existe a "bala de prata"
no mundo JS. É prototype, JQuery, DOJO, Scriptacolous, Ext…todos tem defeitos (em menor ou maior escala).

Quarto:

Sobre a pergunta específica do tópico, não me restrinjo a tecnologias, mas também a assuntos:

1 - Grid Computing. Ver produtos como Terracotta ou Gigaspace. Isto sim é um conceito em evolução
e que vale a pena estudar, ainda mais com os núcleos aumentando.

2 - Relacionado ao primeiro, Concorrência. É um tópico que o Java precisa despontar de vez.
Temos muitos avanços, porém, nada em especial. O que é uma coisa simples em Erlang (Thread-safe)
em Java é um tema complexo, devido a questão de Object-sharing.

3 - GWT. Este bixinho veio com um conceito muito interessante. Quem ver o “core” do negócio
vai perceber que a idéia dele é muito boa, ainda mais para o programador final “end-user”.

4 - Scripting server-side. Só olhar Groovy, JRuby…Rhino.

5 - Java Applet. Calma, é brincadeira!! :smiley: Não consigo pensar em alguma coisa agora, então fica
sem resposta.

Bom pessoal, por enquanto é isso.

[]'s,

[quote=MarcioTavares]Pô, Maurício, será que precisa de um tópico desse tamanho, com esse nível de agressividade e com tantos comentários non-sense, pras pessoas aprenderem isso? Ainda mais um assunto que já foi falado inúmeras vezes nesses anos todos…

De qualquer forma, acho que essa discussão toda gera (muito) mais prejuízo do que benefícios.[/quote]

Eu acho muito pior não dar uma resposta fundamentada comprovando que o que havia sido dito era absurdo. Se eu ou o CV não tivéssemos falado que JS tem suporte a uma orientação a objetos muito mais flexível do que Java, pessoas que entrassem no tópico iriam considerar que o que havia sido dito (de que não é possível “programar OO em JS”) era verdade e isso sim seria um mal muito maior pra os desenvolvedores que estão começando a programar.

O que muita gente esquece de considerar quando está escrevendo aqui no GUJ é que esse é um dos maiores, mais famosos e mais “considerados” fóruns de Java no país, quando você fala alguma coisa aqui você pode estar influenciando a opinião de muita gente que está começando agora ou que caiu no GUJ por um acidente no Google, então é importante que antes de sair falando abobrinhas por aí, as pessoas tenham ao menos o básico de fundamentação pros seus argumentos.

Quando alguém fala besteira aqui no GUJ ele não está só se queimando, está também lascando com outras pessoas.