Off - Discussão Portabilidade Java

Salve Galera,

Esta semana em especial, estou percebendo uma coisa que é de suma importância para o java e está sendo quebrada ou não seguida vamos dizer assim. Ai gostaria de compartilhar com vocês o que vocês acham a respeito do assunto.
Tipo, em outro topic, Win 98 e JBoss, comentei com o matheus sobre o uso do Jboss no este OO, e pensei que fosse apenas o Servidor de Aplicação que não funcionasse no mesmo, mas ele me adivertiu que não era apenas o JBoss mas sim o J2EE como um todo (SDK vamos dizer assim). Isso já é uma quebra de portabilidade.
Outra coisa que tenho estudado em J2EE são os servidores de aplicações. Web Sfi (é assim?), Bea Web Logic, JBoss, enfim todos os usados. Eles são servidores bons, mas que não tem portabilidade ao você utilizar um deles. Se você usar o JBoss e posteriormente mudar para o Bea você terá alguns descritores seu (XML) e em várias situações até as suas classes ( o que irá dar um p… trabalho). Isso é quebra de portabilidade, concordam?
Um outro mérito também é sobre o J2ME, não é a minha área, mas pelo que eu vi em palestras, cada celular (fabricante) tem sua propriva JVM no celular, ou seja, há aplicações para Samsung que não servem em Nokia e isso eu já ouvi falar a respeito.
Não estou aqui criticando, é só comentando mesmo e gostaria de opinião de vocês a respeito, uma discussão saudável de troca de conhecimento e informações.

sobre o SDK + Win98… bem, eu nem vejo problema nisso, pois, q empresa q vai usar win98 como sistema operacional pra servidor de aplicação? tem q ser muito doido… Agora, sobre as implementações de fornecedores diferentes, ah isso sim é um grande problema na minha opnião, pois, o profissional J2EE não vai mais poder falar que é só pegar toda uma aplicação corporativa e trocar de servidor a hora que quiser, pois existe sim arquivos XMLs nativos de cada fornecedor, eu diria q é um problema da especificação do J2EE, isso devia ser padrão tb, tipo, os XMLs são A, B e C, mais nenhum… Porém, ai q ta, onde um fornecedor ganha o cliente do outro? fornecendo mais coisas, fornecendo soluções que façam o cliente se prender a ele, um ótimo exemplo é a Oracle, aqui no trabalho a gente é representante oracle, e tem um cliente q ja usa a um tempão, ai, eles vão usar JDev pra codar o Struts e td mais, com o application server da Oracle, e mais um tal de Oracle ADF pra persistencia, ou seja, se usarem isso tudo integrado com o JDev, vão ter uma produtividade imensa, MAS, no dia q quiserem trocar o fornecedor, FUDEU. Eu sou sempre disse pra usarem oq se tem de padrão, mas ainda é impossivel, pq até mesmo o JBoss tem o seu descritor xml nativo… e isso é um saco, devia ser corrigido na especificação… mas, como eu disse, os fornecedores tem q ganhar cliente um do outro, e sempre vão oferecer algo q prenda o cliente a eles.

é, sobre o windows 98 você tem razão matheus!!
Eu discutindo ontem com o instrutor do curso ele disse: “A portabilidade do java vai existir sempre em relação ao versões do java, que você pode pegar da suas 1.0 e jogar na 5.0 que irá funcionar, é claro que se você pegar da 5.0 e utilizar recursos dela ela não irá funcionar na 1.0” são palavras dele!
Agora concordo que o J2EE está meio sem padrão, com esta busca de agradar melhor o cliente, conforme você emsmo mencionou matheus, deveria ter um padrão de configuração. Mas ficia dificil atingir este nivel. O J2SE já é mais facil ter este padrão, você pode gerar seu jar e colocar em qualquer canto que ele irá rodar, já o seu EAR não irá rodar provavelmente.
E ainda tem o lance do J2ME.

qnto ao J2ME, eu não sou especialista, mas até onde eu sei, a portabilidade só é quebrada qndo usam APIs do celular fornecidas pelo fabricante, que são nativas

mas se vc não usar nenhuma API nativa de celular, roda em qq celular…

o problema é que MIDP 1.0 carece de alguns recursos que existem em APIs de fabricantes

como são poucos celulares que rodam MIPD 2.0, que tem os mais diversos recursos, o pessoal usa as APIs nativas para MIDP 1.0

isso é uma suposição, esta ela certa?

Está cerrto microfilo…

O J2ME é totalmente portável… tanto par acelulares quanto para PDA’s…
mas tem o problema das API’s sim… é igual se vc usar alguma API especifica do teu dservidor de Aplicação… vc nao podera portar sua aplicacao para outro servidor…

Por isso sempre recomenda-se usar o JAVA puro e simplesmente Java =)

Cya!

blz juliano,

só que as aplicações em J2EE não são tão inportaveis assim, né?
o que vc tera que mudar é o web.xml, certo?

só algumas configurações e outras. ja que o código jsp/servlets/ejb/java/etc é independente, ou eu estou errado?

ahn… se fizer em java puro… tudo será portável…
mas se vc usar em sua aplicaçao o gerenciador de pool do container, ou qqr outra coisa que ele te ofereça a mais… fodeu… =)

cya!

o web.xml nem entra na história, o ruim é qnd se usa EJBs, e outra, a implemetação da especificação EJB por parte dos fornecedores pode ser diferente, por ex, Entity Beans pelo certo devem fazer update no banco a cada setter chamado no bean, e um select a cada getter… mas como isso acarreta em muitas chamadas, tem containers q não o fazem, dão jeito de otimizar isso… e outra, eu não vi container J2EE q não precise de um XML nativo dele pra implantar um EJB :roll:

Matheus, pelo que eu entendi na ultima frase, vocÊ quis dizer que nunca viu um container que não precise de um XML né?
Pois é, também não (se bem que sou novo na área) o que ai quebra a portabilidade toda, pois cada container ou melhor os dois que eu já vi (Bea e JBoss) você precisa de um ejb-jar.xml que declara os seus EJB’s e nesse caso é especifico de cada um deles, ou seja, bye bye portabilidade!
A respeito do J2ME Microfio e Juliano, realmente não conheço nada, mas o que eu ouço o pessoal comentar muito é sobre isso… Mas tá ai, vc fica meio limitado nas suas aplicações, pois se usar uma api especifica poderá ou não ter a portabilidade. E nisso se vc não usar a api, será qeu você chegará ao seu resultado final esperado? E se chegar a demanda de tempo não seria bem maior?

Abraços

diogo, é exatamente isso oq eu quis dizer sobre os xml nativos de container

[quote=“diogoacl”]
A respeito do J2ME Microfio e Juliano, realmente não conheço nada, mas o que eu ouço o pessoal comentar muito é sobre isso… Mas tá ai, vc fica meio limitado nas suas aplicações, pois se usar uma api especifica poderá ou não ter a portabilidade. E nisso se vc não usar a api, será qeu você chegará ao seu resultado final esperado? E se chegar a demanda de tempo não seria bem maior?[/quote]

Bem, é claro que é de interesse de cada fabricante prender um produto ao seu aparelho, por isso as API são diferentes. Um caso semelhante com o J2SE seria vc prender a sua aplicação a um sistema operacional só pq no meio do seu código mencionou um diretório como C:\qualquercoisa\

Pô isso é culpa do programador e não do JAVA… o Java é portável, mas nem todas as aplicações poderão ser portáveis.

isso seria total incompetência do programador

mas parece que o pessoal de linux não curte muito java e não usa java para desktop e web…

pra isso usam C++ e PHP…

e grande parte disso se dá por java não ser livre… aff…

[quote=“microfilo”]isso seria total incompetência do programador

mas parece que o pessoal de linux não curte muito java e não usa java para desktop e web…

pra isso usam C++ e PHP…

e grande parte disso se dá por java não ser livre… aff…[/quote]

Bem, não sejamos injustos… “O C++ ainda é a melhor linguagem para GUI”. Palavras do meu ex-professor de Java.

O problema é que não é portável. Mas com o uso do QT é muito rápido o desenvolvimento. E a performance é muito melhor. Todos os caras que são programadores e usam linux que eu conheço programam em Java e C++…

Agora uma perguntinha que não tem nada a ver:

Estava pensando um dia desses, seria possível criar um Sistema Operacional escrito em Java???

Será que o Java vai sempre depender de um sistema escrito em outra linguagem?

Não vamos subestimar o C++ só pq não conhecemos tão bem como conhecemos o Java…

A um dito popular na área de programação que diz:

“A melhor linguagem é aquela que vc conhece mais.”

pensem nisso…

té +

claro feliperod, estou levando ao fato a questão da portabilidade que o programador, desenvolvedor não iria fazer uma caca destas!
O bom de discutir algo é ver o quão amplo as coisas são, eu não havia pensado em api’s proprias, nem em erros de programadores antes de levantar este tópico sobre portabilidade! Mas levantei isso, por java ter uma comunidade que rege todas as regras, então acho que algumas coisas ela deixa passar batido, não dando uma padão, acho que mais fechado, mais detalhado do que ser seguido…, no caso a JCP, entenderam? Ou falei besteira demais?
e microfilio, não entendi o que você dissse com: “…pra isso usam C++ e PHP… e grande parte disso se dá por java não ser livre… aff…”

[quote=“diogoacl”]claro feliperod, estou levando ao fato a questão da portabilidade que o programador, desenvolvedor não iria fazer uma caca destas!
O bom de discutir algo é ver o quão amplo as coisas são, eu não havia pensado em api’s proprias, nem em erros de programadores antes de levantar este tópico sobre portabilidade! Mas levantei isso, por java ter uma comunidade que rege todas as regras, então acho que algumas coisas ela deixa passar batido, não dando uma padão, acho que mais fechado, mais detalhado do que ser seguido…, no caso a JCP, entenderam? Ou falei besteira demais?
e microfilio, não entendi o que você dissse com: “…pra isso usam C++ e PHP… e grande parte disso se dá por java não ser livre… aff…”[/quote]

Eu fiquei pensando aqui, depois que vc disse isso…

Seria possível criar um framework que se adaptasse facilmente a o maior número de servidores possíveis?
O que acham disso? É possivel ou não?

Se fosse possível pq o PJ não pensa em desenvolver algo desse tipo…
Seria um ótima forma de mostrar o valor da comunidade brasileira…

o que acham? viajei muito?

hehehe

té +

Java não é livre??? … ah ta. :roll: , bem, a portabilidade q me referi o tempo todo foi entre servidores de aplicação, WebLogic, JBoss, WebSphere, Oracle application server…, fora isso, é moleza deploya sistema J2EE