GOW
quarta-feira, 24 de fevereiro de 2021
Histórias de fantasia e ficção científica em livros épicos
1. O espadachim de carvão
Série fantástica saída diretamente da mente do nosso Affonso Solano, integrante do intergalacticamente famoso podcast Matando Robôs Gigantes, ou simplesmente MRG. Kurgala é um mundo abandonado por quatro deuses. Adapak é filho de um deles. No primeiro livro, O espadachim de carvão, ele está sendo caçado. Perseguido por um misterioso grupo de assassinos, o jovem de pele cor de carvão se vê obrigado a deixar a ilha sagrada onde cresceu e a desbravar um mundo hostil e repleto de criaturas exóticas. Munido de uma sabedoria ímpar, mas dotado de uma inocência rara, ele agora precisará colocar em prática todo o conhecimento que adquiriu em seu isolamento para descobrir quem são seus inimigos. Depois, em O espadachim da carvão e as pontes de Puzur, lutando para se adaptar ao mundo dos mortais, Adapak se refugia no navio de Sirara, farto de lidar com os segredos do passado. Mas quando um antigo diário cai em suas mãos, ele acaba por mergulhar nos registros de alguém responsável por influenciar não somente sua vida, mas a história de Kurgala. E tem ainda a HQ Crônicas do espadachim de carvão: Tamtul e Magano e a ameaça de Rumbaba!
2. Mistborn
Uma das sagas de fantasia mais aclamadas e adoradas dos últimos tempos, assinada pelo fenomenal Brandon Sanderson. Certa vez, um jovem com uma herança misteriosa desafiou corajosamente a escuridão que sufocava o planeta Scadrial. Mas ele falhou… Desde então, há mil anos, o mundo é um deserto de cinzas e brumas, governado por um imperador imortal conhecido como Senhor Soberano. Nessa sociedade onde as pessoas são divididas em classes sociais, Kelsier, um ladrão bastardo, se torna o único sobrevivente que escapou da prisão brutal do Senhor Soberano, onde ele descobriu ter os poderes alomânticos de um Nascido da Bruma – uma magia misteriosa e proibida. Agora, Kelsier planeja o seu ataque mais ousado: invadir o centro do palácio para descobrir o segredo do poder do Senhor Soberano e destruí-lo. E essa é apenas a Primeira Era de Mistborn, com três livros. Ainda tem a Segunda Era, que, em outros três (e o quarto em processo de escrita) livraços, mostra Scadrial 300 anos depois – mas a evolução do planeta está em risco. Os livros estão disponíveis de forma independente ou em dois boxes.
3. Jogador Nº 1
Repleto de referências à cultura pop, este romance de Ernest Cline, adaptado para o cinema em 2018 por Steven Spielberg, Jogador Nº 1 é sem dúvida um dos livros mais cultuados desta década. O ano é 2044 e a Terra não é mais a mesma. Fome, guerras e desemprego empurraram a humanidade para um estado de apatia nunca antes visto. Wade Watts é mais um dos que escapa da desanimadora realidade passando horas e horas conectado ao OASIS – uma utopia virtual global que permite aos usuários ser o que quiserem; um lugar onde se pode viver e se apaixonar em qualquer um dos mundos inspirados nos filmes, videogames e cultura pop dos anos 1980. Mas a possibilidade de existir em outra realidade não é o único atrativo do OASIS; o falecido James Halliday, bilionário e criador do jogo, escondeu em algum lugar desse imenso playground uma série de easter eggs, e premiará com sua enorme fortuna – e poder – aquele que conseguir desvendá-los. E Wade acabou de encontrar o primeiro deles. Para quem é fã, temos ainda o Almanaque Jogador Nº 1, guia ilustrado que detalha todas as referências do livro.
4. Alien
Estes três romances canônicos complementam universo cinematográfico de Alien – cujos filmes foram dirigidos por mestres como Ridley Scott, James Cameron e David Fincher –, ambientados entre as narrativas de Alien – O oitavo passageiro e Aliens – O resgate. Surgido das sombras, de Tim Lebbon, Mar de angústia, de James A. Moore, e Rio de sofrimento, de Christopher Golden, trazem de volta a tenente Ellen Ripley, interpretada nas telas por Sigourney Weaver, e muitos, muitos xenomorfos.
5. A sombra do corvo
O autor escocês Anthony Ryan estreou na literatura fantástica com A canção do sangue, primeiro volume da trilogia A sombra do corvo, e arrebatou leitores em todo o mundo. Quando Vaelin Al Sorna, um garoto de apenas 10 anos de idade, é deixado por seu pai na Casa da Sexta Ordem, ele é informado de que sua única família agora é a Ordem. Durante vários anos ele é treinado de forma brutal e austera, além de ser condicionado a uma vida perigosa e celibatária. Mesmo assim, Vaelin resiste e torna-se líder entre seus Irmãos. Ao longo de sua jornada, ele descobrirá de quem foi o verdadeiro desejo para que ele fosse entregue à Ordem – o objetivo sempre foi protegê-lo, mas ele não tem ideia do quê. Aos poucos, indícios de uma esquecida Sétima Ordem e questões acerca das ações do Rei Janus fazem Vaelin Al Sorna questionar sua lealdade. Destinado a um futuro grandioso, ele ainda tem que compreender em quem confiar. A trama teve continuidade em O senhor da torre e A rainha do fogo.
6. O enigma de Blackthorn
O enigma de Blackthorn, de Kevin Sands, é uma história de tirar o fôlego, repleta de suspense, mistério e personagens inesquecíveis.Poções, quebra-cabeças e uma ou outra explosão: tudo isso pode acontecer num dia normal de trabalho do jovem Christopher Rowe, aprendiz de boticário. Mas o que ele não sabe, e logo vai perceber, é que esse é um péssimo momento para ser assistente de Benedict Blackthorn. Uma série de assassinatos abala Londres, e Christopher está na mira. Seus únicos aliados são seus melhores amigos. Suas únicas pistas são uma mensagem codificada sobre o projeto mais perigoso de seu mestre, e um aviso criptografado: “Não conte a ninguém!” Agora, resta a ele desvendar o código e descobrir o segredo que pode destruir a humanidade. Ou se tornar a próxima vítima.
Problemas de compatibilidade de versões no Java: especificando a versão do JDK para compilação
Problemas de compatibilidade de versões no Java: especificando a versão do JDK para compilação
Uma das preocupações ao compilarmos aplicações e bibliotecas em Java é que a versão usada para compilação seja compatível com a versão onde o código será executado.
Por exemplo, você pode ter o Java 7 instalado em seu computador de desenvolvimento. Se você gerar um jar e tentar executar no computador de um cliente com o Java 6 pode ocorrer um erro!
Compilação em modo de compatibilidade
A primeira solução para problemas com versões diferentes é configurar o compilador para compilar em modo de compatibilidade.
Mas há um problema: isso não garante que o código executá. A cada versão do Java, classes ganham novos métodos e novas classes são adicionadas. A compilação em modo compatibilidade irá suceder sem erros, mas ao executar as classes em versões anteriores do Java, ocorrerão erros de tempo de execução por falta dos métodos e classes que não existem nas APIs nativas naquela versão.
Um exemplo simples é o construtor da classe BigDecimal
que recebe um inteiro. Ele foi adicionado no Java 5, mas um código que
use esse construtor é compilado sem problemas em compatibilidade para
Java 1.4. Obviamente, ao executar esse código num JRE 1.4 ocorrerá um
erro fatal.
Especificando um JDK alternativo
Então temos a segunda solução, que nos traz garantia de funcionamento: compilar o código com a mesma versão do ambiente do cliente.
Isso não significa, entretanto, que precisamos excluir todas as demais versões do Java de nosso ambiente de desenvolvimento, muito menos que só poderemos trabalhar com uma única versão em todos os projetos.
É possível especificar uma versão alternativa do Java para cada projeto, seja no Eclipse, Ant ou Maven.
Para ver como instalar o JDK 7, consulte o artigo Instalando e Configurando o Java Development Kit 7 para Desenvolvimento.
Especificando a versão e o JDK no Maven
No pom.xml
podemos configurar o maven-compiler-plugin
da seguinte forma:
<source>
: especifica a versão do Java em que está escrito o código-fonte.<target>
: especifica para qual versão do Java o compilador deve compilar o código.<executable>
: especifica qual compilador (javac
) será usado.
Exemplo:
<!-- CONFIGURAR VERSÃO DO JAVA PARA 1.7 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac</executable>
</configuration>
</plugin>
</plugins>
</build>
Veja a documentação aqui.
Configuração única para um grupo de projetos usando herança
Não é necessário ter a configuração acima em cada novo projeto. Você pode criar um parent pom e usar a herança para reaproveitar essa configuração em todos os seus projetos.
Veja como especificar o pai de um projeto:
<parent>
<groupId>org.minhaempresa</groupId>
<artifactId>meu-pom-principal</artifactId>
<version>1.0.0</version>
</parent>
Configuração única para todos os ambientes
Um problema que pode ocorrer é que cada desenvolvedor tem uma instalação do Java em local diferente. Se houver um servidor de integração contínua, o problema é o mesmo. Como especificar o Java sem ter que ajustar o caminho em cada máquina?
Para resolver isso, podemos criar um perfil (profile) diretamente na configuração do Maven. Um perfil nada mais é que um conjunto de configurações que você pode ativar e desativar quando quiser. Se essa configuração for feita em cada instalação do Maven e o perfil for ativado por padrão, podemos especificar a versão do Java em cada local sem maiores dificuldades.
Primeiro, edite o seu arquivo settings.xml
que fica na sua pasta de usuário ou então no diretório conf
da instalação do Maven e adicione um perfil com uma propriedade especificando onde está o Java.
Exemplo:
<profiles>
<profile>
<id>compiler</id>
<properties>
<JDK7>C:\Program Files\Java\jdk1.7.0_45</JDK7>
<JDK4>C:\Program Files\Java\jdk1.4</JDK4>
</properties>
</profile>
</profiles>
No código acima, definimos duas propriedades JDK7
e JDK4
. Note que você pode definir quantas propriedades quiser.
Agora devemos ativar o perfil para todos os projetos que usem essa instalação do Maven, editando novamente o settings.xml
e adicionando o seguinte trecho:
<activeProfiles>
<activeProfile>compiler</activeProfile>
</activeProfiles>
Então, em seu projeto ou parent pom, use a propriedade definida assim:
<executable>${JDK7}/bin/javac</executable>
Definindo o JDK num projeto do Eclipse
Ao abrir o Eclipse, ele virá configurado com mesmo o JDK usado para executá-lo, ou seja, o que estiver configurado como padrão em seu computador. Todavia, você pode incluir na configuração do Eclipse quantas versões quiser, tanto do JDK (compilação) quanto do JRE (execução).
Incluindo uma instalação do Java no Eclipse
Primeiro, acesse o menu Window > Preferences...
e vá até a configuração Java > Installed JREs
.
Clique em Add...
.
Selecione a opção Standard VM
e clique em Next >
.
Preencha o campo JRE home
digitando o diretório de instalação do Java que você quer adicionar. Ou clique em Directory...
para procurar a pasta. O Eclipse irá preencher as demais informações para você.
Clique em Finish
e a nova instalação será adicionada à lista.
Clique em OK
.
Configurando o projeto para usar uma versão específica do Java
Clique com o botão direito em um projeto e acesse a opção Properties
. Clique no item Java Build Path
e vá até a aba Libraries
.
Selecione o Java atualmente em uso e clique no botão Edit...
.
Selecione o item Alternate JRE
, selecione a JRE ou JDK que você quer usar e clique em Finish
.
Verifique se o Java mudou e clique em OK
para concluir a configuração.
Talvez o Eclipse emita um aviso de que será necessário recompilar o projeto. Isso é normal, apenas confirme.
Note que para projetos que usam o plugin do Maven para o Eclipse
(M2E), você não precisa fazer isso manualmente. Apenas adicione o JDK ao
Eclipse, como descrito acima, e configure seu pom.xml
. O plugin selecionará o Java mais adequado para o projeto automaticamente.
Especificando o JDK num build Ant
Caso você faça a compilação e empacotamento de seus projetos com
scripts Ant, é possível especificar a versão de compilação para a task <javac>
de uma forma muito simples. Basta definir o atributo executable
, por exemplo:
<javac srcdir=""
destdir=""
executable="path-to-java14-home/bin/javac"
fork="true"
taskname="javac1.4" />
Considerações finais
Especificar uma versão do Java é uma boa prática para evitar problemas inesperados durante a entrega de um software. Procure compilar e testar seus programas usando a mesma versão do ambiente onde eles serão executados.
Este artigo descreve várias formas de atingir isso, para você ter um ambiente de desenvolvimento “saudável”.
Por este e outros motivos, recomendo o uso do Maven para novos projetos, já que ele evita a repetição do processo de configuração do ambiente para cada novo desenvolvedor ou servidor.
Para maiores detalhes sobre o Maven, consulte o artigo: Instalando, configurando e usando o Maven para gerenciar suas dependências e seus projetos Java.