Até onde o JAVA é livre?

Boa tarde Jack, aqui é o Luis Fernando!

Gostaria de aproveitar a oportunidade para perguntar por que o netbeans não trabalha certo com valores float, e se existe como arrumar isso, ou se eu é que estava fazendo algo errado. Tive que alterar as variaveis para double porque o netbeans insistia em dizer que o valor inserido na variável ficaria com falta de precisão,quando o valora ser inserido era um float compatível.

Sei que java é livre para desenvolver aplicações, mas gostaria de saber também se java é uma linguagem 100% livre para distribuição, ou seja, se eu desenvolver um software poderei distribuí-lo sem ter que pagar nenhuma licença. O motivo é que vou desenvolver uma aplicação para a APAE, para concorrer a bolsa do artigo 170 e para isso a linguagem a ser usada deve ser livre de licença.

O software que vou desenvolver é basicamente um cadastro de alunos, que irá armazenar as informações que atualmente estão arquivadas em papel nas gavetas de arquivo, que demora a localização do arquivo procurado. o software iria então fazer a busca atravéz do nome ou numero de inscrição. além dos dados cadastrais será possível incluir informações como disgnósticos médicos, avaliações, medicamentos, foto observações e outros. Estarei desenvolvendo esse software nas férias, pensei em usar access mesmo como banco de dados, oque você acha?
Abraço.

Bem Luís Fernando, vamos por partes… 🙂 – Na prática a mensagem do NetBeans em relação ao seu código-fonte, afirmando que o tipo primitivo float teria baixa precisão, é referente a previsão feita pela IDE no que se refere aos aspectos envolvidos. Em miúdos, o NetBeans e o compilador JAVA perceberam que a sua expressão matemática poderia resultar em um número com várias casas decimais após a vírgula e, neste sentido, o tipo double seria o mais indicado. Por uma questão de segurança (overflow) e usabilidade (nenhum mecanismo de controle foi proposto pelo programador) o NetBeans bloqueou a compilação do fonte durante a execução do autômato do JAVA (o que não significa que o NetBeans não consiga trabalhar/gerenciar variáveis do tipo float, muito pelo contrário).

Em relação ao licenciamento do JAVA pela SUN, sua detentora, há bastante controvérsia e informações desencontradas. Tentarei aqui explicar objetivamente a conceitualização que cerca o assunto. Antes de qualquer coisa, é importante entender a diferença explícita entre software livre e software gratuito. De acordo com o Portal de Software Livre do governo federal, “… O termo freeware não possui uma definição amplamente aceita mas é usado com programas que permitem a redistribuição mas não a modificação, e seu código fonte não é disponibilizado. Estes programas não são software livre”. Ainda de acordo com esta mesma fonte software livre é, essencialmente, “…o software disponível com a permissão para qualquer um usá-lo, copiá-lo, e distribuí-lo, seja na sua forma original ou com modificações, seja gratuitamente ou com custo. Em especial, a possibilidade de modificações implica em que o código fonte esteja disponível. Se um programa é livre, potencialmente ele pode ser incluído em um sistema operacional também livre. E importante não confundir software livre com software grátis porque a liberdade associada ao software livre de copiar, modificar e redistribuir, independe de gratuidade. Existem programas que podem ser obtidos gratuitamente mas que não podem ser modificados, nem redistribuídos. Por outro lado, existe a possibilidade de uso não-gratuito em todas as categorias listadas no que segue. Há uma cópia da definição de software livre pela Free Software Foundation publicada na página http://www.fsf.org/philosophy/free-sw.pt.html.

Resumindo, você enquanto programador pode definir a licença, com a qual, quer redistribuir sua aplicação. Existe uma quantidade imensa de licenças de distribuição de softwares reconhecidas no mercado e, não obstante, você enquanto “dono” da aplicação pode inclusive criar a sua licença de redistribuição baseada em algum modelo pré-existente. E foi mais ou menos o que a SUN fez!!!Na prática, nos primórdios, o JAVA (JDK e afins) era gratuito, mas não era livre. Qualquer programador podia utilizá-lo, inclusive em aplicações comerciais sem ter que necessariamente pagar nada à SUN. Atualmente o JAVA é “quase livre”. Vixe Maria, mas afinal o que é ser quase livre? :S

Em miúdos, a SUN criou sua própria licença de distribuição e liberou o J2SE sob ela. A Sun Community Source Licensing (SCSL), não é uma licença livre e nem aberta, embora permita o estudo do código e sua alteração – mas não a livre publicação de versões alteradas. Isso significa dizer que você, enquanto programador comercial, pode utilizar o JAVA sem problema algum para desenvolver seus sistemas de informação e, escolher como vai querer distribuí-los (no seu caso, você vai optar por distribuir gratuitamente ou vai registrá-lo como GPL pelo que pude observar). A regra acima aplica-se apenas aqueles programadores e softhouses que vão trabalhar diretamente no código fonte do JAVA, para adaptá-lo ou modificá-lo. Para baixar o código-fonte dos vários pacotes que compõe a plataforma JAVA, sob a licença SCSL, basta acessar o repositório oficial. Faz-se importante lembrar que alguns pacotes que fazem parte da suíte JAVA são livres. Este é o caso, por exemplo, do NetBeans (uma das principais IDEs JAVA) que atualmente está licenciado sob GPL e não sob a SCSL.

Já em relação ao seu questionamento sobre o SGBD (sistema de gerenciamento de banco de dados) a ser utilizado nesta sua aplicação, se a idéia é mesmo desenvolver um software que terá um cunho social e será de livre distribuição e/ou utilização, não pense no Access. Seria um contra-senso você utilizar J2SE para desenvolver um software livre que utiliza como banco de dados um SGBD proprietário, não é mesmo?!?

Minha sugestão é que você utilize um ambiente compatível com os teus objetivos. Que tal:

  • SO Linux (uma distribuição de sua preferência);
  • J2SE + NetBeans;
  • Banco de Dados Firebird, MySQL ou PostgreSQL (ambos livres).

Para saber mais visite:

http://www.gnu.org/philosophy/license-list.html

http://www.softwarelivre.gov.br/SwLivre/

http://www.sun.com/software/communitysource/j2se/java2/download.xml

http://br-linux.org/linux/java-codigo-aberto-para-download

Espero ter ajudado! 😉