Ae pessoal…
Como voces já devem saber, a microsoft tem uma “jre” feito por ela para rodar aplicativos java… é usado até no IExplorer… enfim…
Alguém poderia me dar uma dica aonde eu posso achar a API dessa vm da microsoft? Estou desenvolvendo uma aplicação que não está pegando na runtime da microsoft… é só uma parte da aplicação… ela toda funciona, menos esta parte, pois está faltando alguma classe que na Vm da microsoft não tem.
Alguém sabe aonde consigo a API desta vm???
Um colega meu disse que tinha nos antigos sites da msdn, e disse também que a galera da msdn já tirou este conteúdo do ar. Estou realmente precisando disto, quem poder me ajudar fico grato.
Ahn, não entendi - você quer usar as classes da Microsoft (com.ms.*) ou você quer que algumas classes da Sun (java.util.Collections etc.) funcionem no ambiente Microsoft?
De qualquer maneira, veja se você acha um arquivo SDKDocs40.exe com 10.895.496 bytes. Essa é a documentação das classes da Microsoft, incluindo as que são com.ms.*.
De qualquer maneira, se seu programa usa Swing, ou alguma classe que só tenha sido incorporada ao Java na versão 1.2 ou posterior, você terá problemas na JVM da Microsoft (dá um pouco de trabalho se você não tiver a documentação, você vai ter de olhar o Java Console, rodar seu programa, e ver todos os casos em que ocorre “ClassNotFoundException” ou “NoSuchMethodException”. )
(O problema é que o Javadoc não mostra algo como “@since 1.2” por um pouco de desleixo da Sun. Os fontes que estão marcados assim só têm anotações do tipo “@since 1.4” ou “@since 1.5”)
O problema é exatamente este…
a JVM da ms está bem mais leve que a da sun… só que ela não ker abrir o applet que temos aqui :S
deve ser um dos 2:
ou classnotFound
ou noSuchMethod
qualquer um já mostra q a msjvm é “depreciada”…
:?
Já descobri como se ve o console
É só ir no menu Exibir e depois em Java Console, isto no Internet Explorer…
Se este problema fosse pessoal eu procuraria um Vm da Sun mesmo cara, mais a empresa quer testar os dois e a partir deste teste tomar uma decisão (Performace)
Pois é. Muita gente ainda requer que o applet funcione em MS JVM, mesmo sendo uma prática não recomendada pela própria Microsoft (a posição oficial da Microsoft é que:
você instale o .NET Framework 1.1 (ou 2.0, a ser lançado em breve) em cada computador - isso irá requerer que você tenha pelo menos o 2000 Professional, o XP ou o 2003;
você use uma das linguagens Microsoft - C#, VB.NET ou talvez J# - para codificar o equivalente Microsoft de applets e Java Web Start ).
É que ainda tem um monte de computadores velhos com essa JVM velha (última versão: 5.0.3810) e ela, bem ou mal, roda applets (se bem que sou mais o Flash para o tipo de coisas que muitos desses applets antigos tentam resolver.)
Para evitar problemas com a Sun, vocês provavelmente devem saber que o J# é um projeto que foi terceirizado para uma companhia da Índia que o desenvolveu sob o nome de “Projeto Banjara” - se desse algum problema, a Microsoft ia dizer que não tinha nada a ver com isso…
eu ponho para rodar um applet aqui no browser rodando com a MSJVM que é este aqui: http://www.island.com/bookviewer/javaversion.asp
ele roda normal… só que quando eu crio um applet na mão, simples por sinal, ele dá ClassNotFoundException…
public class teste extends Applet{
public void paint(Graphics g){
g.drawString(“Funciona!”, 0, 25);
}
}[/code]
exeção levantada:
Error loading class: teste
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException: teste
at com/ms/vm/loader/URLClassLoader.loadClass
at com/ms/vm/loader/URLClassLoader.loadClass
at com/ms/applet/AppletPanel.securedClassLoad
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.run
at java/lang/Thread.run
Daí eu fico pensando, se tem esta dificuldade toda para rodar um applet desse, como vai rodar uma aplicação? Se der alguém testa este applet só com a MSJVM pra ve se pega na máquina de voces… porque em nenhuma aqui pegou… Inclusive já tentei até por ele em um .jar para na tag por a propriedade archive=“teste.jar” code=“teste.class” mais mesmo assim continua a gerara a exceção. Alguém sabe o que pode ser?
:roll:
Se você tiver sorte talvez encontre em algum lugar um arquivo chamado SDKJava40.exe, com 20.222.928 bytes, contendo a documentação não só das classes da Microsoft, mas também de como escrever corretamente o tag para funcionar com a MSJVM. O problema é que essa documentação também não é 100% correta, então você acaba tendo vários problemas (e como o fonte da MSJVM, assim como o do IE, não são públicos, fica difícil saber exatamente o que fazer, sem testar um monte.)
Você pode gerar um cab com a ferramenta cabarc.exe, e tentar o cab:
cabarc -r -p n myteste.cab *.class
e no seu html:
A vantagem é que você pode usar num mesmo html versões diferentes do applet para MSJVM e Sun (pois é, pode ser que você deixe a funcionalidade limitada no caso da MSJVM - só para o seu cliente se mancar que a MSJVM é “fria” e mesmo a Microsoft insiste para você não usá-la - ou tenha de usar alguma classe esquisita com.ms.* no caso da MSJVM. Por isso é que é bom ter versões diferentes.).
Se você puser no mesmo tag o atributo archive=teste.jar e o parâmetro , o Sun Plugin não sabe o que é e não vai carregar a versão Microsoft, carregando apenaso o teste.jar.
Por outro lado, quando em um mesmo tag existe o atributo archive e o parãmetro cabbase, a MSJVM lê o cabbase e ignora o archive. (Se existir apenas o archive, a MSJVM lê o .jar especificado, com alguma relutância).
Concordo cara…
tudo que voce falou faz sentido, valeu pela ajuda!
Achei qual era o problema…
a vm da microsoft só roda applets compilado com a vm do java até a 1.3 :evil:
E detalhe… para rodar “perfeito” tem quer ser código compilado em java 1.1.2 :roll: