Java vs Javascript

JAVA
Em 1991, na Sun Microsystems, foi iniciado o Green Project, o berço do Java, uma linguagem de programação orientada a objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling. O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e planejar a “próxima onda” do mundo digital. Eles acreditavam que, em algum tempo, haveria uma convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas pessoas no seu dia-a-dia.A linguagem primeiramente se chamou "Oak", porem em uma reuniao em uma cafeteria James Gosling resolveu chamar a linguagem de Java, onde em 1995 foi lançada oficialmente!
Desde seu lançamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programação na história da computação. Em 2004 Java atingiu a marca de 3 milhões de desenvolvedores em todo mundo[1]. Java continuou crescendo e hoje é uma referência no mercado de desenvolvimento de software. Java tornou-se popular pelo seu uso na Internet e hoje possui seu ambiente de execução presente em web browsers, mainframes, SOs, celulares, palmtops, cartões inteligentes etc.
Programas Java não são traduzidos para a linguagem de máquina, como outras linguagens estaticamente compiladas e sim para uma representação intermediária, chamada de bytecodes.
Principais Caracteristicas:
- Orientação a objeto - Baseado no modelo de Simula67
- Portabilidade - Independência de plataforma - "write once, run anywhere"
- Segurança - Pode executar programas via rede com restrições de execução-Security Manager
- Sintaxe similar a Linguagem C/C++ e principalmente, a C#
- Desalocação de memória automática por processo de coletor de lixo (garbage collector-GC)
- Compilador JIT(Just in Time) que aumenta a performance de execução dos bytecodes da JVM
JAVASCRIPT
JavaScript é uma linguagem de programação criada pela Netscape em 1995, que a princípio se chamava LiveScript, a Netscape após o sucesso inicial desta linguagem, recebe uma colaboração considerável da Sun, após esta colaboração, podemos dizer que o JavaScript é uma linguagem compatível com a linguagem Java, por esta razão, a semelhança dos nomes "JavaScript".
A linguagem foi criada para atender, principalmente, as seguintes necessidades:
- Validação de formulários no lado cliente (programa navegador)
- Interação com a página
Assim, foi feita como uma linguagem de script. Javascript tem sintaxe semelhante à do Java, mas é totalmente diferente no conceito e no uso.
De acordo com seu sistema de tipos JavaScript é:
- fraca - sua tipagem é mutável
- dinâmica - uma variável pode assumir vários tipos diferentes durante a execução
- implícita - as variáveis são declaradas sem tipo
1. É interpretada, ao invés de compilada;
2. Possui ótimas ferramentas padrão para listagens (como as linguagens de script, de modo geral);
3. Oferece bom suporte a expressões regulares (característica também comum a linguagens de script).
Sua união com o CSS é conhecida como DHTML. Usando o Javascript, é possível modificar dinamicamente os estilos dos elementos da página em HTML.
Nos dias de hoje o Javascript voltou a ganhar espaço devido ao AJAX (acrônimo em língua inglesa de Asynchronous Javascript And XML),que é o uso metodológico de tecnologias como Javascript e XML, providas por navegadores, para tornar páginas Web mais interativas com o usuário, utilizando-se de solicitações assíncronas de informações. AJAX não é somente um novo modelo, é também uma iniciativa na construção de aplicações Web mais dinâmicas e criativas. AJAX não é uma tecnologia — são realmente várias tecnologias conhecidas trabalhando juntas, cada uma fazendo sua parte, oferecendo novas funcionalidades. AJAX incorpora em seu modelo:
- Apresentação baseada em padrões, usando XHTML e CSS
- Exposição e interação dinâmica usando o DOM
- Intercâmbio e manipulação de dados usando XML e XSLT
- Recuperação assíncrona de dados usando o objeto XMLHttpRequest
- JavaScript unindo todas elas em conjunto.
Portanto notamos que apesar do nome, as 2 linguagens sao muitíssimo diferentes em quase todos os aspectos, tendo cada uma sua área de dominio e aplicação.
O ELO PERDIDO
O Java 6 fornece suporte integrado da especificação JSR-223. Esta especificação oferece uma maneira conveniente e padrão de execução de linguagens de scripting na JVM e fornece acesso a recursos e classes Java a partir de scripts. Java 6 vem com um built-in de integração com o Mozilla Rhino, motor de JavaScript usado pelo Mozilla.
As especificações JSR 223 são convenientes e fáceis de usar. Para trabalhar com scripts, você só precisa saber um par de classes fundamentais. A principal delas é a classe ScriptEngine, que lida com roteiro de interpretação e avaliação. Para instanciar um motor de script, você usa a classe ScriptEngineManager para recuperar um objeto ScriptEngine para a linguagem de script que você está interessado ,e cada linguagem de script tem um nome. A Mozilla Rhino ECMAScript linguagem de scripting (vulgarmente conhecida como JavaScript) é identificada por "js".
//...codigo anterior omitido
ScriptEngineManager manager= new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
JavaScript incorporado pode ser usado para uma variedade de finalidades. Uma vez que é mais flexível e mais fácil de configurar do que Java Hard-Code, que muitas vezes pode ser usado para codificar as regras de negócios que poderá mudar com freqüência. Scripting expressões são avaliadas usando o método eval(). Quaisquer variáveis utilizadas no ambiente de script pode ser atribuída a partir do seu código Java usando o put () method.
ScriptEngineManager manager= new ScriptEngineManager();
ScriptEngine engine= manager.getEngineByName("js");
engine.put("age", 21);
engine.eval("if (age >= 18){ " +
" print('Old enough to vote!'); " +
"} else {" +
" print ('Back to school!');" +
"}");
//Result on console
> Old enough to vote!
A partir do exemplo ScriptEngineManager, nós pedimos uma instancia de um motor de JavaScript usando o método getEngineByName. Sobre o mecanismo de script, o método eval é chamado a executar uma determinada string como código JavaScript! Para resumir, a manipulação de exceções não é mostrada nos exemplos. Existem Exceções Checadas(checked) e de Tempo de Execução(Runtime) API javax.script. Desnecessário dizer, você tem que lidar com as exceções de forma adequada.
//Hello World Javascript on the JVM!
import javax.script.*;
public class EvalScript {
public static void main(String[] args) throws Exception {
// cria um gerente para o motor de scripts
ScriptEngineManager factory = new ScriptEngineManager();
// cria o motor JavaScript como mostrado nos exemplos anteriores
ScriptEngine engine = factory.getEngineByName("js");
// interpreta o codigo Javascript
engine.eval("print('Hello World, Javascript on the JVM')");
}
}
Com arquivos o codigo é um pouco diferente, e neste exemplo, podemos chamar o método eval() que aceita um java.io.Reader como entrada. O leitor lê o script a ser executado diretamente do fluxo . Desta forma é possível executar scripts a partir de arquivos, URLs e os recursos envolvendo os objetos relevantes fluxo de entrada como Readers.
import javax.script.*;
public class EvalFile {
public static void main(String[] args) throws Exception {
// creia gerente para o motor de script
ScriptEngineManager factory = new ScriptEngineManager();
// cria motor JavaScript engine
ScriptEngine engine = factory.getEngineByName("js");
//interpreta o script Javascript vindo do arquivo, com nome dado no primeiro parametro
engine.eval(new java.io.FileReader(args[0]));
}
}
Vamos dizer que exista um arquivo chamado "test.js" no diretorio onde executamos a aplicação com o seguinte codigo:
println("Hello World lido do arquivo de nome test.js")
Rode o codigo da seguinte maneira:
java EvalFile test.js
REFERENCIAS E LINKS
Artigo em OnJava sobre RHINO no Java 6
Guia Oficial da Sun sobre JSR-223
Wikipedia Javascript
Wikipedia AJAX
Excelente artigo da Sun sobre como usar Javascript na JVM com otimos exemplos e conteudo
Espero ter ajudado com este post!
Obrigado pelo seu tempo!
Participem do OSUM!