Seria o javaFX um Applet melhorado?

Essa é minha dúvida…

Faz tudo que um applet faz e mais um pouco? ou é meio limitado quanto à manipulação de arquivos e/ou execução de algoritmos em java?

JavaFX é a implementação da Sun para ActionScript, linguagem de programação utilizada no Flash.

É que pela breve pesquisa que fiz achei que ele pudesse ter alguma interoperabilidade com classes Java.

Não, não, não! ActionScript é um dialeto do JavaScript. JavaFX não tem absolutamente nada a ver com ActionScript, e pouco tem a ver com Java além do fato que roda em uma JVM e pode chamar classes Java.

[quote=entanglement]
Não, não, não! ActionScript é um dialeto do JavaScript. JavaFX não tem absolutamente nada a ver com ActionScript, e pouco tem a ver com Java além do fato que roda em uma JVM e pode chamar classes Java. [/quote]

Isso é uma dúvida, como assim ele pode “chamar classes Java” ?

O compilador JavaFX cria arquivos .class, da mesma forma que o compilador java (javac) - ou seja, um programa Java pode chamar código JavaFX. Além disso, é possível importar classes Java em um programa JavaFX.

Hmm, legal, então no caso se eu tenho algoritmos em Java já escritos eu posso utilizá-los em uma plataforma desenvolvida em JavaFX. Era esse meu intuito!
Só resta saber se compensa eu desenvolver essa plataforma em JavaFX ou Applet.

Não era exatamente isso que eu quiz dizer, o javaFx é bacana e lembra um pouco a actionscript ao meu ver roda na jvm em diversas plataformas segundo a página oficial, mobile, desktop, web.

[quote=jpcasati]Hmm, legal, então no caso se eu tenho algoritmos em Java já escritos eu posso utilizá-los em uma plataforma desenvolvida em JavaFX. Era esse meu intuito!
Só resta saber se compensa eu desenvolver essa plataforma em JavaFX ou Applet.[/quote]

Vc está misturando as coisas…
Applet é uma forma de deploy (de disponibilizar ) a interface gráfica. Não interfere com nada em como essa interface é feita.
Vc pode usar o mesmo codigo que para uma aplicação desktop. Vc usará Swing ou AWT do mesmo jeito. Só muda como o usuario consegue ter acesso a isso.

JavaFX é uma na edição da familia java (SE,EE,ME, JavaCard, javaTV) e é focado em interface gráfica ( embora tenha outros recursos ) A ideia é que Fx é uma forma de criar interfaces gráficas (GUI) par sejam mais ricas e proporcionem uma melhor experiencia ao usuário. O mesmo codigo JavaFX em desktop e applet será traduzido da mesma forma que o swing (na realidade o FX funciona em uma camada acima do swing). A graça é que vc poderá usar o JavaFX em ME e JavaTV também. (cujas classes não dependen das outras plataformas, apenas a implementação depende) A ideia é proporcionar uma edição especializada em GUI e multimedia cuja escrita seja independente da plataforma java subjacente. É o write one, show everyere… O JavaFX é a resposta java ao Flash e Silverlight (em que disponibilizado como um applet - mas applets viram desktop apenas arrastando para fora do browser (no java7)) é a resposta a “swing é dificil e feito” para o desktop (quero ver o drag and drop competir com isso), é a resposta ao Iphone e às interfaces sem graça nos celulares (no celular será baseado no LWUIT) sobretudo os smartphones e para fechar com chave de outro, é tb uma forma mais eficaz de trabalhar interfaces e media para JavaTV. Em geral FX é a resposta a “java não trabalha com multimedia” e “java não permite fazer interfaces iradas”…

Portanto, vc programa FX para fazer interfaces, e disponibiliza como e onde quiser … com applet ou sem applet.

[quote=jpcasati]Hmm, legal, então no caso se eu tenho algoritmos em Java já escritos eu posso utilizá-los em uma plataforma desenvolvida em JavaFX. Era esse meu intuito!
Só resta saber se compensa eu desenvolver essa plataforma em JavaFX ou Applet.[/quote]

Bom cara, nunca usei JavaFX profissionalmente, mas a minha opinião é que apesar de semelhantes, as idéias de Applets e javaFX são diferentes.
Applets eram uma forma de distribuir aplicações cliente na Web, criado para ser um controle ActiveX multiplataforma.
Já JavaFX é mais completo, tem acesso a qualquer classe Java, não funciona só na Web, servindo também para aplicações desktop mesmo, até podendo substituir o Swing, além de um suporte melhor para aplicações cliente-servidor que o Applets.

Na minha opinião, vale muito mais a pena que os Applets.

O foco do jfx é aplicações RIA…isso inclui internet e desktop. Applets eram somente para internet.

Sérgio, você não está confundindo Applet com JNLP?

A classe JApplet diretamente interfere em como a interface é feita, pois ela mesma representa uma área de desenho. Existem até métodos especiais, que devem ser sobrescritos. Você não deveria disparar outros JFrames ou JDialogs a partir de um applet. Fora o fato do JApplet ter uma série restrições, já que roda embarcado no browser, como um aplicativo flash faria.

Ou seja, não se resume a uma forma de deploy.

Do contrário, o JNLP permite o deploy facilitado. Nele sim, o usuário clica num botãozinho, o java baixa tudo e dispara uma aplicação, como se ela sempre estivesse na máquina local.

Na web, o JavaFX é realmente um Applet melhorado. Bastante melhorado. Mas ele não se resume a web, mas representa a todo um framework de desenho, podendo ser usado em aplicações desktop. Ele também usa uma linguagem diferente de java, declarativa, uma espécie de “HTML para desenho” embora, depois de compilado, tudo se transforme em .class da JVM.

[quote=ViniGodoy]Sérgio, você não está confundindo Applet com JNLP?

A classe JApplet diretamente interfere em como a interface é feita, pois ela mesma representa uma área de desenho. Existem até métodos especiais, que devem ser sobrescritos. Você não pode disparar outros JFrames ou JDialogs a partir de um applet. Fora o fato do JApplet ter uma série restrições, já que roda embarcado no browser, como um aplicativo flash faria.
[/quote]

não sei de onde vc tirou isso. Vc pode fazer o que quiser (se o seu applet for assinado). Uma vez fiz um leitor de PDF.Ele tinha um botão “full screen” que abrir uma janela fora do browser e espandida ao tamanho do desktop. Porque o meu applet era self-signed o java colocava um triangulo de warning junto à tela, mas isso é facilmente tirado com um applet corretamente assinado.

O Applet não interfere na forma como a interface é desenhada.
Com um bom design OO vc consegue ter a mesma aplicação em applet ou livre no desktop. Eu mesmo já fiz isso. Vc tem que programar esse comportamento, mas é trivial.

A meu ver, resume. Mas acho que será mais obvio daqui para a frente quando vc começar a arrastar applets para o desktop.
Veja um exemplo aqui

Lembre-se que o applet tb é transferido para a máquina local. A diferença entre jws e applet era conceptual. hoje não é mais. Applet é apenas “uma area dentro do browser onde roda java” o que roda lá é JWS. Isto é uma necessidade para o JavaFX e um passo alem do flash e companhia. Vc gostou do applet ? arrasta para o desktop e vira um widget ou uma aplicação full-desktop.

Da onde eu tirei isso?
An applet is a special kind of Java program that a browser enabled with Java technology can download from the internet and run. An applet is typically embedded inside a web page and runs in the context of a browser. An applet must be a subclass of the java.applet.Applet class. The Applet class provides the standard interface between the applet and the browser environment.

Swing provides a special subclass of the Applet class called javax.swing.JApplet. The JApplet class should be used for all applets that use Swing components to construct their graphical user interfaces (GUIs).

Fonte: http://java.sun.com/docs/books/tutorial/deployment/applet/getStarted.html

Sobre as restrições:
http://java.sun.com/docs/books/tutorial/deployment/applet/security.html

Ok, um applet assinado roda fora da SandBox, é mais próximo de uma aplicação JNLP tradicional. Abrir janelas externas não é o modus operandi típico de um applet, e certamente não é o que o usuário do browser espera.

Certo, mas como você mesmo falou exige “um bom design OO”. Se exige um design bom, não é só uma forma de deploy. Aliás, só o fato dele exigir uma classe filha de JApplet, já indica que não é simplesmente uma forma de deploy.

O que se resume a uma forma de deploy é disparar uma aplicação via JNLP, diretamente. Nela, o java faz o download e roda a aplicação sozinho, tenha você feito qualquer um bom design, ou não. Não é necessário criar um filho de JApplet ou modificar de qualquer forma o seu design.

Da onde eu tirei isso?
An applet is a special kind of Java program that a browser enabled with Java technology can download from the internet and run. An applet is typically embedded inside a web page and runs in the context of a browser. An applet must be a subclass of the java.applet.Applet class. The Applet class provides the standard interface between the applet and the browser environment.

Swing provides a special subclass of the Applet class called javax.swing.JApplet. The JApplet class should be used for all applets that use Swing components to construct their graphical user interfaces (GUIs).

Fonte: http://java.sun.com/docs/books/tutorial/deployment/applet/getStarted.html

Sobre as restrições:
http://java.sun.com/docs/books/tutorial/deployment/applet/security.html

Ok, um applet assinado roda fora da SandBox, é mais próximo de uma aplicação JNLP tradicional. Abrir janelas externas não é o modus operandi típico de um applet, e certamente não é o que o usuário do browser espera.

[/quote]

Mesmo um unsigned pode abrir janelas, mostrar dialogs etc… não ha limitações desse tipo. Era isso que eu queria responder a que vc disse “Você não pode disparar outros JFrames ou JDialogs a partir de um applet.”

O que vc negritou não justifica a sua afirmação.

Humm… por essa logica um EAR tb não seria uma forma de deploy já que força vc a separar vários componentes em vários jars para que sejam compatilhados entre o war e o ejb.
O design a que me referi é simplesmente utilizar um JPanel para criar o seu layout e manter um builder para o menu. quando vc está em ambiente jframe, vc cria o jframe , cria o menu nele via builder e coloca o panel como objeto principal. No applet vc faz a mesma coisa mas usando o objeto container dentro do applet. a aplicação em si não muda.

Como disse, tlv daqui para a frente seja mais obvio que é apenas uma form de deploy.

[quote]
O que se resume a uma forma de deploy é disparar uma aplicação via JNLP, diretamente. Nela, o java faz o download e roda a aplicação sozinho, tenha você feito qualquer um bom design, ou não. Não é necessário criar um filho de JApplet ou modificar de qualquer forma o seu design.[/quote]

Isso não é verdade. Mesmo em JWS vc tem algumas libs especiais para acessar os recursos do desktop. Vc não pode usar as libs padrão do swing “livre”. essa restrição é equivalente ao sandbox do applet (aliás o sandbox é o mesmo. ser num jframe ou ser na janela do browser não muda o sandbox).

Veja bem, eu não estou dizendo que applet e jws sempre foram equivalentes. Estou dizendo que eles ,agora, são equivalentes.
portanto, agora, sim é uma questão de escolha, de publico alvo, etc… não é mais um trade-off tecnico.

Na verdade, eu disse “não pode”, mas queria dizer “não deveria”. Até pq, poucas coisas são impossíveis, mas não significa que elas sejam recomendadas.

Isso pq foge ao conceito de Applet, que é relacionado a um widget, ou há uma janelinha dentro de um browser. Não há uma aplicação qualquer, cheia de janelas e dialogs. A definição de applet da sun é:
“An applet is a program written in the Java programming language that can be included in an HTML page, much in the same way an image is included in a page.”

É baseado nesse conceito que todos os exemplos da Sun são escritos (inclusive os da página que você postou). Se você não trabalha sob essa definição, acho melhor dizer que faz deploy “baseado em applets”, mas não applets. Como você mesmo falou em outro tópico, ou vc usa a definição à risca, ou não diz que está trabalhando com aquilo.

Para o conceito de disparar uma aplicação de janelas, usa-se JWS. A tecnologia que faz por baixo dos panos é, realmente, basicamente a mesma. Mas acho que não se pode fugir ao significado de cada opção e simplificar o applet como uma forma de deploy.

Vini, não perca seu tempo alimentando trolls.

Não!!! Eu gostei da definição dele!!!
Fale mais coisas interessantes, Vini :wink:

Não!!! Eu gostei da definição dele!!!
Fale mais coisas interessantes, Vini :wink: [/quote]

Releia novamente o que eu postei.

[quote=ViniGodoy]Na verdade, eu disse “não pode”, mas queria dizer “não deveria”. Até pq, poucas coisas são impossíveis, mas não significa que elas sejam recomendadas.

Isso pq foge ao conceito de Applet, que é relacionado a um widget, ou há uma janelinha dentro de um browser. Não há uma aplicação qualquer, cheia de janelas e dialogs. A definição de applet da sun é:
“An applet is a program written in the Java programming language that can be included in an HTML page, much in the same way an image is included in a page.”[/quote]

applet não é um conceito abstrato para precisar do preciosismo da definição. Mas vamos supor que sim.

Nessa definição nada me impede de jogar uma unica imagem do tamnho da tela e meu site ser só isso. Portanto , nada me impede de colocar um applet do tamanho da tela do browser e meu site ser só isso.

continuando supondo que é verdade essa definição de applet.

  1. Vc acha mesmo, honestamente, que applet pode ser comparado a uma imagem ?
  2. Vc acha que essa ainda é a definição da sun para applet depois de tudo o que eles fizerem do 6_10 para cá para tornar o applet o mais perto possivel e até melhor que o flash,etc…

Como eu já disse. Vc pode não gostar ou concordar com applet como forma de deploy, mas a realidade é que a sun fez de tudo para ser exatamente isso a partir de agora. O tempo dirá … :slight_smile: