Ir para conteúdo
  • Cadastre-se

[Java] Como Começar a Aprender Java


Guma

Posts recomendados

Java - a história

 

Em 1991, a Sun Microsystems, iniciou o “Green Project”, o ponto de partida de uma linguagem de programação orientada a objectos denominada “Java”. Os mentores do projecto eram “Patrick Naughton”, “Mike Sheridan”, e “James Gosling”. O objectivo do projecto não era a criação de uma nova linguagem de programação, mas antecipar e planear a “próxima era” do mundo digital. Eles acreditavam que no futuro iria existir uma convergência dos comp***dores com os equipamentos e electrodomésticos usados pelas pessoas no seu dia-a-dia.

Para provar a viabilidade desta ideia, 13 pessoas trabalharam arduamente durante 18 meses. No verão de 1992 eles emergiram de um escritório de “Sand Hill Road” no “Menlo Park” com uma demonstração funcional da ideia inicial. O protótipo chamava-se *7 (“StarSeven”), um controlo remoto com uma interface gráfica “touchscreen”. Para o *7 foi criado uma mascote, hoje amplamente conhecido no mundo Java, o “Duke”. O trabalho do “Duke” no *7 era ser um guia virtual ajudando e ensinando o utilizador a utilizar o equipamento.

O *7 tinha a possibilidade de controlar diversos dispositivos e aplicações. “James Gosling” especificou uma nova linguagem de programação para o *7. “Gosling” decidiu denominá-la de “Oak”, que significa carvalho, uma árvore que ele podia observar quando olhava pela janela.

O próximo passo era encontrar um mercado para o *7. A equipa achava que uma boa ideia seria controlar televisões e filmes. Eles construíram um demo a que deram o nome “MovieWood”, mas infelizmente era muito cedo para que os filmes por encomenda assim como as empresas de TV por cabo pudessem rentabilizar o negócio. A ideia que o *7 tentava vender naquela altura, é hoje realidade em programas interactivos e também na televisão digital. Permitir ao telespectador interagir com a programação numa grande rede por cabo, era algo muito visionário e estava muito longe do que as empresas de TV por cabo tinham capacidade de entender e comprar. A ideia certa, na época errada.

A sorte é que o boom da Internet aconteceu, e rapidamente estabeleceu-se uma grande rede interactiva. Era este tipo de rede interactiva que a equipa do *7 estava a tentar vender ás empresas de TV por cabo. Deixou então de ser necessário construir uma infra-estrutura para rede. “Gosling” foi incumbida a tarefa de adaptar o “Oak” para a Internet e em Janeiro de 1995 foi lançada uma nova versão do “Oak” que foi redenominada de Java. A tecnologia Java tinha sido projectada para mover-se através de redes de dispositivos heterogéneos, redes como a Internet. Agora aplicações poderiam ser executadas dentro dos Browsers nos Applets Java e tudo seria disponibilizado pela Internet instantaneamente. Foi o estático HTML dos Browsers que promoveu a rápida disseminação da dinâmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o número de utilizadores cresceu rapidamente, grandes empresas, como a IBM anunciaram suporte para a tecnologia Java.

Desde o seu lançamento, em Maio de 1995, a plataforma Java foi adoptada com uma rapidez superior a todas as outras linguagens de programação na história da comp***ção.

Em 2003 Java atingiu a marca de 4 milhões de programadores em todo mundo. Java continuou e continua a crescer e hoje é com certeza um padrão para o mercado oferecendo qualidade, desempenho e segurança ainda sem nenhum rival a altura. Java tornou-se popular pelo seu uso na Internet e hoje possui um ambiente de execução em web browsers, mainframes, SOs, telemóveis, entre outros.

 

Java - algumas noções

A plataforma Java é o nome dado ao ambiente comp***cional, ou plataforma, da empresa estadunidense “Sun Microsystems”. O programador cria aplicações para este ambiente através da linguagem de programação Java e de um conjunto de ferramentas de desenvolvimento. Neste caso, a plataforma não se refere a um sistema operativo ou hardware específico, mas a um programa chamado de máquina virtual, e um conjunto de bibliotecas que disponibilizam funcionalidades comuns.

A plataforma Java é formada por outras três plataformas que foram criadas para segmentos específicos de aplicações:

 

Java SE (Java Platform, Standard Edition).

É a base da plataforma; inclui o ambiente de execução e as bibliotecas comuns.

 

Java EE (Java Plataform, Enterprise Edition).

A edição voltada para o desenvolvimento de aplicações empresariais.

 

Java ME (Java Platform, Micro Edition).

A edição para o desenvolvimento de aplicações para dispositivos móveis.

 

A plataforma Java é constituída por um grande número de tecnologias, cada uma contém uma parte distinta de todo o ambiente de desenvolvimento e execução de software. Os utilizadores finais, interagem com a máquina virtual Java (Java Virtual Machine, ou JVM) e um conjunto padrão de bibliotecas de classe.

Existe uma grande variedade de formas de utilizar uma aplicação Java, incluindo applets embutidas em páginas web, aplicações para utilização em comp***dores, aplicações em telemóveis e em servidores de Internet.

 

Os programadores de aplicações em Java utilizam um conjunto de ferramentas de desenvolvimento, o JDK.

Um programa escrito para a plataforma Java necessita de dois componentes para ser executado: a máquina virtual Java, e um conjunto de bibliotecas de classe que disponibilizam um série de serviços para o programa. A distribuição da máquina virtual e esta biblioteca é conhecida como JRE (Java Runtime Environment).

 

Java Virtual Machine

 

O “coração” da plataforma Java é o conceito de um processador "virtual", que executa os programas formados por bytecodes Java. Este bytecode é o mesmo independentemente do hardware ou sistema operativo em que o programa é executado. A plataforma Java disponibiliza a JVM, que traduz, em tempo de execução, o bytecode para instruções nativas do processador. Isto permite que uma mesma aplicação seja executada em qualquer plataforma que possua uma implementação da máquina virtual.

Desde a versão 1.2 da JRE, a implementação da Sun da JVM inclui um compilador just-in-time (JIT). Com este compilador a totalidade do bytecode de um programa é transformado em instruções nativas e carregado na máquina virtual numa única operação, permitindo um ganho no desempenho superior a implementação anterior, onde as instruções em bytecode eram interpretadas uma a uma. O compilador JIT pode ser projectado de acordo com a plataforma ou hardware de destino, e o código que ele gera pode ser optimizado com base na observação de padrões de comportamento dos programas.

 

 

A plataforma Java não é a primeira plataforma baseada numa máquina virtual, mas é de longe a mais conhecida e a que alcançou maior sucesso. Anteriormente esta tecnologia era utilizada na criação de emuladores para auxílio a projectos de hardware ou de sistemas operativos. A plataforma Java foi desenhada para ser totalmente implementada em software, permitindo assim a sua migração de uma forma fácil para todos os tipos de plataformas e de hardware.

 

 

Java - exemplos de código

 

Metodo main

 

O método main é onde o programa inicia. Pode estar presente em qualquer classe. Os parâmetros de linha de comando são enviados para a array args[], do tipo String.

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

Criação de classes

 

Todas as classes em java derivam de Object. O java permite apenas herança simples. Exemplos:

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

O exemplo acima cria duas classes, ambas derivadas de animal. O Java não suporta herança múltipla.

Interfaces

 

Uma interface modela um comportamento esperado. Pode-se entende-la como uma classe que contenha apenas métodos abstratos. Embora uma classe não possa conter mais de uma superclasse, a classe pode implementar mais de uma interface. Exemplo:

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Classes internas

 

Uma das principais diferenças do C++ é que o Java pode ter classes internas. Exemplos:

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Objetos e classes anônimos

 

Podemos também objetos e ou classes anônimas, exemplo:

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

Java - programação por objectos

 

Antes de mais ... bem vindos ao maravilhoso mundo de programação por objectos.

 

O que é OO ?

 

Imaginem que querem programar um sim-estrada (triciclos ou biciletas também funcionam), terão algo como :

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

A diferença aqui é que sem OO têm de controlar tudo, os objectos e como eles agem dentro do vosso programa. Em OO, cada objecto sabe como deve efectuar uma certa operação. Portanto o código principal só precisa de mandar o carro acelerar ou mudar de direcção que o objecto Carro sabe que tem de mandar cada uma das rodas andar mais rápido (ou devagar). Portanto quem constroi a "estrada" com os carros basta mandá-los andar que eles tratam de controlar as suas componentes.

 

Isto não quer dizer que os programas fiquem mais espertos, mas quer dizer que a estrada não precisa de saber que o carro tem 4 rodas que têm de ser aceleradas. A "estrada" (imaginem que a estrada é o vosso main) basta dizerem ao carro para andar mais rápido que o carro trata do resto. Se amanhã passar a existir um carro com 5 rodas, a estrada não precisa de saber isso, continua a mandar o carro andar, e é o carro que agora tem de controlar as 5 rodas.

 

Este é um exemplo um pouco colorido mas é para mostrar que o conhecimento de como as coisas funcionam passam a fazer parte das próprias coisas. Se um dia alguém criar uma classe "auto-estrada", pode simplesmente usar os objectos carro que já existiam para a "estrada" e não precisa de saber como andam, se têm 4,5, ou 7 rodas.

 

Mas OO não é o paraíso e a resposta para todos os problemas. Para algumas situações só vem atrapalhar e é preferivel um programa mais simples com um main de 10 páginas ... mas podem quase sempre fazer a mesma coisa com objectos.

 

Mais uma questão de OO é a possíbilidade de uma classe herdar de outra

 

Vamos então esclarecer um pouco a questão de herança.

 

A palavra herança quer dizer que há certas coisas que passam de país, para filhos, para netos etc. As classes também podem ter herança de outras classes, onde certas propriedades (variáveis ou métodos) podem ser herdados pelos filhos.

 

Continuando o exemplo do sim-estrada, existem vários veículos que podem circular pelas estradas, como por exemplo ambulâncias, carros de polícia :police:, carros normais, carros tunados 8) etc. Cada uma tem uma particularidade como por exemplo ligar as luzes de emergência na ambulância e nos carros de polícia, acender as luzes neon dos carros tunados, ou até disparar com o turbo dos mesmos. No entanto todos são veiculos que obdecem às mesmas regras e têm propriedade comuns a todos, como o facto de todos terem quatro rodas, um volante, um espelho retrovisor etc. Como é que podem implementar isto ?

 

Em C normal, teriam provavelmente um "tipo" na struct que nos dizia que tipo de veiculo é que era, e haveria uma função que tinha que ver que tipo de carro era e só permitir os carros policia e ambulâncias executar um método chamado AcendeLuzesEmergencia().

 

Em OO podemo usar herança para criar uma classe pai (ou mãe, é indiferente porque os compiladores não são esquezitos :) ) que tem as variaveis e métodos comuns a todos os veiculos, como por exemplo o acelerar e travar, a velocidade a que o veiculo vai etc. E depois podemos ter classes que herdam desta classe pai mas acrescentam novas funcionalidades, como o AcendeLuzesEmergencia, ou DisparaTurbo. As funções de acelerar e travar, não precisam de ser programadas novamente na classe filho pois o filho tem acesso a tudo o que o pai tem definido (não é bem assim, mas já explico melhor) e ainda às funções que ele tem que não existem na classe pai. Mais ainda, não precisam de nenhuma variável a dizer de que tipo é o objecto, pois quando o criam, criam um objecto do tipo CarroPolicia ou CarroTunado. Usando o objecto Carro do meu último exemplo, podem criar os seguintes objectos filho(uso notação Java, mas C++ ou C# é muito parecido) :

 

Código (Java): [seleccione]

classe CarroPolicia extends Carro{

LuzesEmergencia luzes[2];

 

void AcendeLuzesEmergencia () {

// Ligar as luzes de cima vermelha e azul

...

}

}

Agora podem criar um objecto do tipo CarroPolicia e mesmo assim chamar as funções de acelerar e travar embora elas não estejam definidas na classe CarroPolicia mas sim na classe Carro. Esta classe extende a classe Carro adicionando novas luzes e uma nova função. Se criarmos uma classe do tipo Carro, teremos um carro simples que não tem luzes de emergência nem um metodo de acender as mesmas.

 

Este é o funcionamento básico da herança. Existe um conceito que ainda não falei, mas que dei a perceber acima que é, as vezes podem querer que os filhos não tenham acesso a tudo o que nós temos, ou pelo menos não permitir que seja mexido. E mais, este conceito também se extende às classes vizinhas que são nossas "amigas".

 

Por exemplo, não querem que o CarroTunado consiga mexer directamente com a velocidade, porque nesta versão do sim-estradas, todos os carros só podem andar a um máximo de 50km/h. Sendo assim, queremos que qualquer alteração à velocidade seja feita somente pela chamada acelerar da classe Carro, porque inclui código que não permite acelerar mais do que os 50km/h. Para isso tornamos a variavel da velocidade com visibilidade private, mas deixar a função acelerar com uma visibilidade public. Assim todas as subclasses podem acelerar só por meio da chamada à função Acelerar da classe pai, porque não lhes é permitido mexer na variável que é private. Por o método acelerar ser public, isto que dizer que qualquer outra classe de fora pode chamar este método do objecto. Ou seja, se a estrada (outra classe) fosse um ser inteligente e queria mandar acelerar e desacelerar os carros que circulam nela, podiam simplesmente chamar a função respectiva.

 

Tanto os métodos como as variáveis da classe podem ter uma visibilidade diferente, o que permite ou não o acesso a essa funções ou variáveis pelos filhos ou amigos.

 

Existe mais um tipo de visibilidade que se chama protected, e que faz com classes fora da familia (classes que não são herdadas) não consigam aceder às funções, mas os filhos consigam.

 

Texto editado de um postpost do utilizador Destineo.

 

Java - projectos de utilizadores P@P

 

ficheiro: Butao1.java

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

no fim de compilar obtemos um ficheiro chamado Butao1.class

 

e finalmente,

ficheiro Butao1.html

 

Código (Java): [seleccione]

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

Java - agradecimentos

filip_e

d_pintassilgo

freesumo

Tofas

Destineo

account_tiny.gif

svn | timeline

activeMember.sendMessage("Quase tudo é possível quando se tem dedicação e habilidade. Grandes trabalhos são realizados não pela força, mas pela perseverança")

Link para o comentário
Compartilhar em outros sites


sempre to atras do melhor pra mim aprender mas e mas

e qnd axar algo bom como esse irei postando aki

nao e certo pra l2 pra da pra ter uma nocao ....

account_tiny.gif

svn | timeline

activeMember.sendMessage("Quase tudo é possível quando se tem dedicação e habilidade. Grandes trabalhos são realizados não pela força, mas pela perseverança")

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.




×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.