Sou analista e programador há cerca de 10 anos. Neste período trabalhei com várias linguagens, inclusive com Java. Este post é o conteúdo de uma palestra com o mesmo título, 10 razões porque usar Java. Não é meu intuito discutir linguagens de programação, compará-las ou persuadir o leitor a utilizar Java. Java não é a melhor linguagem de programação já inventada pois isto não existe. Há apenas razões pela qual utilizar uma linguagem de programação ou outra para resolver um determinado problema computacional.
Vamos as razões:
1 - Java é gratuíto
Java depende de uma JVM, que é gratuíta. O programador depende de um compilador e do JDK, que também é gratuíto. Programadores costumam utilizar IDEs, como o Delphi ou o o Netbeans. Para Java, apesar de haverem IDEs pagas, as duas maiores IDEs do mercado (Eclipse e NetBeans) também são gratuítas. Há vários frameworks e ferramentas para a implementação de sistemas em Java, e os mesmos também costumam ser gratuítos. A documentação é gratuíta. Servidores são gratuítos. Drivers de Banco de Dados são gratuítos.
2 - Java é padronizada
A orientação a objetos do Java ajuda a diminuir a barreira entre um diagrama UML e o código Java e permite, inclusive, a geração de códigos a partir do modelo UML. Sei que muitos programadores estão acostumados a trabalhar com programas de 20.000 linhas de código. Há linguagens que não permitem a modularização. Só é muito complicado desenvolver em equipes quando temos apenas um código-fonte de 20.000 linhas. A orientação a objetos começa a ser justificada quando temos equipes de desenvolvimento. A integração com ferramentas UML permitem também manter a documentação do sistema atualizada em relação a implementação.
O mesmo em relação a própria organização do código. Os pacotes Java são diretórios e uma classe estará escrita em um arquivo com o mesmo nome. Isto facilita trabalhar em equipes e desenvolver sistemas maiores. Além de obrigar a trabalhar com Orientação a Objetos, Java possui padrões de código que são como convenções: Classes em maiúsculo, métodos e atributos em minúsculo e uma letra maiúscula substitui um espaço em branco. Assim, se uma classe tem um atributo nome o acesso a este atributo normalmente é feito pelo método getNome().
3 - Java é interoperável
A empresa utiliza Windows mas pretende migrar para Linux. O Sistema era desktop mas será migrado para a web. A equipe de vendas irá utilizar Palmtops. O que fazer? Java. Java é interoperável, ou seja, funcionar em várias arquiteturas distintas, sistemas operacionais distintos e trabalha com paradigmas de programação distintos como desktop e web. Na web Java pode ser utilizado no servidor (JSP e Servlets) ou no cliente (Applets). Apesar de haver diferenças para a implementação (J2EE, J2SE e J2ME), a linguagem é a mesma e o conceito é o mesmo.
Indo além, Java permite também uma facilidade para internacionalização com a utilização nativa de arquivos Properties e definição automática de valores financeiros, numéricos, de data e texto. Além disto, a utilização de Unicode pode garantir a visualização de textos em vários alfabetos distintos.
4 - Java possui uma API satisfatória
A API Java traz implementada várias coisas como socket, criptografia, listas, filas, acesso a arquivos e compactadores. Também há uma API para Imagem 2D, Imagem 3D, música (MP3, Wav e Midi). É muito provável que um programador antigo em Java não conheça toda a API e nem é esta a questão. Como a API é padronizada basta ler a documentação e utilizar as classes que a linguagem já traz prontas. De toda a API Java, acho que minha paixão é a classe String. Sim, eu era programador C...
Não bastando isto, a API do Java é facilmente extensível por vários outros componentes e frameworks que complementam a API tornando o trabalho do analista muito mais simples.
5 - Java possui frameworks, padrões de projeto e Componentes
A engenharia de software vem propondo soluções para minimizar o trabalho do analista já há um tempo. Padrões de projetos, frameworks e componentes são exemplos destas propostas. Há vários exemplos de como implementar padrões de projetos em Java e vários padrões de projeto que foram propostos pensando nesta linguagem. Frameworks Java facilitam a implementação de sistemas complexos e componentes fazem com que o programador Java possa compartilhar seu conhecimento com toda a comunidade Java. Alguns exemplos:
A documentação da linguagem, chamada Javadoc, está disponível gratuitamente. E possui um padrão de organização estruturada como documento HTML. Os desenvolvedores de frameworks e componentes costumam utilizar este padrão de documentação para documentar seus códigos. Isto facilita em muito tanto o trabalho em equipe quanto a reutilização de código de terceiros em outras implementações. Além disto, junto com o compilador Java vem um aplicativo para geração de JavaDoc do código que você acabou de implementar.
7 - Java permite sistemas distribuídos
Com a utilização de redes de computadores em empresas, sistemas distribuídos se tornam a cada dia mais realidade. Java permite a utilização de programação em redes possuindo implementações em sua API nativa para sockets, RMI, CORBA e Webservices. No caso especíifico de CORBA, junto com o compilador Java vem um aplicativo que gera a partir da IDL toda a estrutura de classes para uma aplicação CORBA.
8 - Java integra com Bancos de dados
Eu sei que várias linguagens conectam-se com bancos de dados, porém a interface JDBC faz com que a comunicação com bancos de dados em Java funcionem de maneira homogênea. Além disto, há atualmente implementações de drivers de banco de dados para Java para a maioria dos bancos comerciais. Inclusive ODBC. Inclusive Access. Inclusive bancos de dados feitos em Java e que não dependem de servidores. A API JDBC permite a migração de um sistema de um banco de dados para outro a partir da alteração de sua conexão. Isto facilita a passagem de uma aplicação do ambiente de desenvolvimento e testes para o ambiente de produção.
9 - Java é multi-thread
A multi-programação em Java é nativa. Toda a API Java baseia-se em comunicação por eventos e o controle de Threads em Java é simples de ser implementado e bastante eficiente. Toda classe Java possui métodos para implementação de semáforos e na API há especificações para implementar métodos que não permitam acesso concorrente.
10 - Java é moderna
A linguagem Java integra vários conceitos modernos, como por exemplo o Ant, Maven, XML, Orientação a Aspectos, Agentes móveis, Testes de Software e integração com repositórios. Java se tornou uma das linguagens mais utilizadas no mundo. Exemplos em livros são feitos em Java. Padrões de projetos são apresentados em Java. Componentes e exemplos de frameworks são feitos em Java. Devido as razões acima apresentadas, muitas empresas utilizam Java. O resultado disto é que há várias oportunidades de emprego nesta linguagem.
Para os que gostam de comparar linguagens de programação e tentam explicar qual a melhor linguagem de programação, fica a pergunta: Podemos dizer que o martelo é a melhor ferramenta de um marceneiro?
Vamos as razões:
1 - Java é gratuíto
Java depende de uma JVM, que é gratuíta. O programador depende de um compilador e do JDK, que também é gratuíto. Programadores costumam utilizar IDEs, como o Delphi ou o o Netbeans. Para Java, apesar de haverem IDEs pagas, as duas maiores IDEs do mercado (Eclipse e NetBeans) também são gratuítas. Há vários frameworks e ferramentas para a implementação de sistemas em Java, e os mesmos também costumam ser gratuítos. A documentação é gratuíta. Servidores são gratuítos. Drivers de Banco de Dados são gratuítos.
2 - Java é padronizada
A orientação a objetos do Java ajuda a diminuir a barreira entre um diagrama UML e o código Java e permite, inclusive, a geração de códigos a partir do modelo UML. Sei que muitos programadores estão acostumados a trabalhar com programas de 20.000 linhas de código. Há linguagens que não permitem a modularização. Só é muito complicado desenvolver em equipes quando temos apenas um código-fonte de 20.000 linhas. A orientação a objetos começa a ser justificada quando temos equipes de desenvolvimento. A integração com ferramentas UML permitem também manter a documentação do sistema atualizada em relação a implementação.
O mesmo em relação a própria organização do código. Os pacotes Java são diretórios e uma classe estará escrita em um arquivo com o mesmo nome. Isto facilita trabalhar em equipes e desenvolver sistemas maiores. Além de obrigar a trabalhar com Orientação a Objetos, Java possui padrões de código que são como convenções: Classes em maiúsculo, métodos e atributos em minúsculo e uma letra maiúscula substitui um espaço em branco. Assim, se uma classe tem um atributo nome o acesso a este atributo normalmente é feito pelo método getNome().
3 - Java é interoperável
A empresa utiliza Windows mas pretende migrar para Linux. O Sistema era desktop mas será migrado para a web. A equipe de vendas irá utilizar Palmtops. O que fazer? Java. Java é interoperável, ou seja, funcionar em várias arquiteturas distintas, sistemas operacionais distintos e trabalha com paradigmas de programação distintos como desktop e web. Na web Java pode ser utilizado no servidor (JSP e Servlets) ou no cliente (Applets). Apesar de haver diferenças para a implementação (J2EE, J2SE e J2ME), a linguagem é a mesma e o conceito é o mesmo.
Indo além, Java permite também uma facilidade para internacionalização com a utilização nativa de arquivos Properties e definição automática de valores financeiros, numéricos, de data e texto. Além disto, a utilização de Unicode pode garantir a visualização de textos em vários alfabetos distintos.
4 - Java possui uma API satisfatória
A API Java traz implementada várias coisas como socket, criptografia, listas, filas, acesso a arquivos e compactadores. Também há uma API para Imagem 2D, Imagem 3D, música (MP3, Wav e Midi). É muito provável que um programador antigo em Java não conheça toda a API e nem é esta a questão. Como a API é padronizada basta ler a documentação e utilizar as classes que a linguagem já traz prontas. De toda a API Java, acho que minha paixão é a classe String. Sim, eu era programador C...
Não bastando isto, a API do Java é facilmente extensível por vários outros componentes e frameworks que complementam a API tornando o trabalho do analista muito mais simples.
5 - Java possui frameworks, padrões de projeto e Componentes
A engenharia de software vem propondo soluções para minimizar o trabalho do analista já há um tempo. Padrões de projetos, frameworks e componentes são exemplos destas propostas. Há vários exemplos de como implementar padrões de projetos em Java e vários padrões de projeto que foram propostos pensando nesta linguagem. Frameworks Java facilitam a implementação de sistemas complexos e componentes fazem com que o programador Java possa compartilhar seu conhecimento com toda a comunidade Java. Alguns exemplos:
- Jakarta Struts
- JasperReports
- Hibernate
- Jakarta Velocity
- JSF
- GWT
- Jakarta POI
- Log4J
- JSTL
A documentação da linguagem, chamada Javadoc, está disponível gratuitamente. E possui um padrão de organização estruturada como documento HTML. Os desenvolvedores de frameworks e componentes costumam utilizar este padrão de documentação para documentar seus códigos. Isto facilita em muito tanto o trabalho em equipe quanto a reutilização de código de terceiros em outras implementações. Além disto, junto com o compilador Java vem um aplicativo para geração de JavaDoc do código que você acabou de implementar.
7 - Java permite sistemas distribuídos
Com a utilização de redes de computadores em empresas, sistemas distribuídos se tornam a cada dia mais realidade. Java permite a utilização de programação em redes possuindo implementações em sua API nativa para sockets, RMI, CORBA e Webservices. No caso especíifico de CORBA, junto com o compilador Java vem um aplicativo que gera a partir da IDL toda a estrutura de classes para uma aplicação CORBA.
8 - Java integra com Bancos de dados
Eu sei que várias linguagens conectam-se com bancos de dados, porém a interface JDBC faz com que a comunicação com bancos de dados em Java funcionem de maneira homogênea. Além disto, há atualmente implementações de drivers de banco de dados para Java para a maioria dos bancos comerciais. Inclusive ODBC. Inclusive Access. Inclusive bancos de dados feitos em Java e que não dependem de servidores. A API JDBC permite a migração de um sistema de um banco de dados para outro a partir da alteração de sua conexão. Isto facilita a passagem de uma aplicação do ambiente de desenvolvimento e testes para o ambiente de produção.
9 - Java é multi-thread
A multi-programação em Java é nativa. Toda a API Java baseia-se em comunicação por eventos e o controle de Threads em Java é simples de ser implementado e bastante eficiente. Toda classe Java possui métodos para implementação de semáforos e na API há especificações para implementar métodos que não permitam acesso concorrente.
10 - Java é moderna
A linguagem Java integra vários conceitos modernos, como por exemplo o Ant, Maven, XML, Orientação a Aspectos, Agentes móveis, Testes de Software e integração com repositórios. Java se tornou uma das linguagens mais utilizadas no mundo. Exemplos em livros são feitos em Java. Padrões de projetos são apresentados em Java. Componentes e exemplos de frameworks são feitos em Java. Devido as razões acima apresentadas, muitas empresas utilizam Java. O resultado disto é que há várias oportunidades de emprego nesta linguagem.
Para os que gostam de comparar linguagens de programação e tentam explicar qual a melhor linguagem de programação, fica a pergunta: Podemos dizer que o martelo é a melhor ferramenta de um marceneiro?
8 comentários:
show de bola!
Muito bom o artigo, gostei bastante, parabéns !!!
Muito legal !!
Parabéns pelo artigo. Praticamente 2 anos, e ainda assim, atual.
Muito bem escrito.
Muito bom mesmo. Me ajudou bastante no projeto que estou implementando
Outros pontos de vista de porque usar java e quando usar :
http://blog.itsway.com.br/quando-usar-java-porque-usar-java/
valeu!
java é um lixo
Java é a multiplataforma!
Postar um comentário