terça-feira, 13 de julho de 2010

Dica: Licença gratuita do Flash Builder 4 (Standard)

Para quem não sabe, a Adobe oferece gratuitamente a licença do Flash Builder 4 (Standard) para estudantes, professores e profissionais desempregados.

Para solicitar a licença, basta preencher esse formulário. No caso da licença estudantil, também será preciso anexar o comprovante de matrícula da instituição de ensino.

quinta-feira, 29 de abril de 2010

O padrão de projetos "Singleton"

Bom, com esse post, vou começar uma série de posts sobre padrões de projetos de software (do inglês, Design Patterns) - envolvendo padrões utilizados com o action script 3, de uma forma geral, ou, especificamente, com o framework Flex. Dessa forma, nada melhor que começar por um dos padrões mais utilizados e que possui uma implementação bem simples: o "Singleton".

- Descrição geral: O Singleton é um padrão que garante a existência de apenas uma instância de uma determinada classe em todo o sistema.

- Motivação: Muitos projetos necessitam que algumas classes tenham apenas uma instância no sistema, mantendo um ponto global de acesso a esse objeto. Por exemplo, uma aplicação que precisa de uma infraestrutura para log de dados, poderia ser modelada de forma que exista apenas um objeto responsável em fazer os logs em toda a aplicação (garantindo uma melhor consistência do log gerado). Outro caso em que o Singleton é bastante utilizado é nos modelos de dados das aplicações baseadas em MVC (garantindo a integridade e consistência dos dados em toda a aplicação).

- Implementação:

a) Em JAVA:

Na linguagem JAVA, como existem construtores privados, pode-se implementar um Singleton facilmente.

A forma mais simples e tradicional de implementação é a seguinte:
public class Singleton {
	private static final Singleton INSTANCE = new Singleton();

	//O construtor privado previne a instanciação a partir de outras classes
	private Singleton() {}
 
	public static Singleton getInstance() {
		return INSTANCE;
	}
}
 

A única desvantagem dessa abordagem é que a instância Singleton vai ser criada logo que a classe for inicializada, pois a construção da mesma está em um atributo estático, e isso nem sempre é desejável nas aplicações - pode-se querer retardar esse processo e controlar exatamente o ponto em que instanciação ocorrerá (fazendo uma espécie de "lazing loading", ou inicialização sob demanda).

Dessa forma, foi proposta outra abordagem que contorna esse problema: a chamada solução de Bill Pugh. Nessa abordagem, a classe aninhada não é referenciada em nenhum momento antes do método "getInstance", não sendo, portanto, carregada pelo class loader antes da invocação desse método.

public class Singleton {
	//O construtor privado previne a instanciação a partir de outras classes
	private Singleton() {}
 
	/**
	* O SingletonHolder é carregado na primeira execução do Singleton.getInstance() 
	* ou no primeiro acesso ao SingletonHolder.INSTANCE, nunca antes.
	*/
	private static class SingletonHolder { 
		private static final Singleton INSTANCE = new Singleton();
	}
 
	public static Singleton getInstance() {
		return SingletonHolder.INSTANCE;
	}
 }

Obs.: As duas abordagens apresentadas são "thread-safe", não requerendo nenhum constructo especial da linguagem (por exemplo, "volatile" ou "synchronized").


b) Em Action Script 3:

Em action script, como não existe construtor privado, algumas adequações têm que ser feitas. Assim, uma forma utilizada é a utilização de uma inner class (chamada no exemplo de "SingletonEnforcer") como argumento do construtor da classe Singleton - dessa forma, mesmo esse construtor sendo público, não há possibilidade de instanciar um objeto da classe principal (por não ser possível instanciar um objeto SingletonEnforcer fora dessa classe, para passá-lo como parâmetro).

Assim, a única forma de acessar uma instância da classe principal - a única instância - é através de métodos estáticos do tipo "getInstance()". Na primeira execução desse método, em qualquer ponto do programa, como ainda não foi feita nenhuma instanciação da classe ("instance == null"), vai ser feito a criação de um objeto que vai ser atribuído na variável estática "instance". Nas próximas chamadas ao método getInstance, essa variável já estará atribuída, e o objeto que está armazenado nela será reutilizado ("return instance").

package{ 
	public class ExemploSingleton { 
		private static var instance:ExemploSingleton; 

		public function ExemploSingleton(enforcer:SingletonEnforcer): void { 
			if (enforcer == null) throw new Error("Só pode haver uma instância de ExemploSingleton"); 
		} 

		public static function getInstance() : ExemploSingleton { 
			if (instance == null) 
					instance = new ExemploSingleton( new SingletonEnforcer );
			return instance; 
		} 

	} 

}

//Para bloquear o acesso ao constructor. 
class SingletonEnforcer { }


Obs.: O "if (enforcer == null) throw new Error("Só pode haver uma instância de ExemploSingleton")", dentro do construtor, é só para garantir que não será passado um "null" como parâmetro do mesmo, o que burlaria todo o artifício proposto.


Referências:
http://en.wikipedia.org/wiki/Singleton_pattern
http://pt.wikipedia.org/wiki/Singleton
http://sourcemaking.com/design_patterns/singleton

segunda-feira, 22 de março de 2010

Liberadas as versões finais do Flex 4 SDK e do Flash Builder 4

Uma grande notícia: a Adobe acaba de anunciar a liberação das tão aguardadas versões finais do SDK do Flex 4 (conhecido por Gumbo) e do Flash Builder 4!!!

Os downloads podem ser feitos diretamente na página oficial do Flex.

Para saber mais sobre o Flex 4, o Flash Builder 4 e a arquitetura Spark (utilizada nessa versão), visite a página do Flex Developer Center, que tem muito material.

Datavisualization é gratuito e open source

Uma notícia que eu ouvi esses dias, da qual até então eu não tinha conhecimento, e que me deixou bem animado, foi a de que os componentes do pacote "data visualization" agora são free e open source.

A Adobe anunciou que que esses componentes (advanced data grid, olap data grid e a biblioteca de gráficos) agora fazem parte da distribuição padrão, gratuita e open source do SDK do Flex.

Dessa forma, agora não é mais necessário ter a licença do Flex Builder Professional para utilizar esses componentes, barateando aqueles projetos de menor porte.

sábado, 6 de fevereiro de 2010

Flex SDK 3.5a Released

Foi lançada nessa semana, a versão 3.5a do SDK (software development kit) do Flex. Essa versão é uma espécie de patch, que corrige um defeito inserido na versão 3.5. O defeito envolve a classe ApplicationUpdaterUI, que está relacionada à atualização automática em aplicações AIR.

O download pode ser feito na página oficial, ou diretamente por esse link.

quarta-feira, 13 de janeiro de 2010

Flex for Kids


No dia 6 de Fevereiro, acontecerá um evento de caráter beneficente, o "Flex for Kids", que terá 10 palestras on-line com grandes nomes da comunidade Flex brasileira.

A inscrição, no valor R$30,00, é na verdade uma doação para a entidade "Cotolengo", do Mato Grosso do Sul. Após inscrever-se, o participante terá acesso ao conteúdo das palestras on-line e futuramente poderá baixar o material da gravação das mesmas.

Maiores informações podem ser encontradas no site oficial do evento.

segunda-feira, 14 de dezembro de 2009

Flex SDK 3.5 Released

Foi liberada na Sexta, dia 11, sem muita divulgação, a versão 3.5 do SDK (software development kit) do Flex. O download pode ser feito na página oficial, ou diretamente por esse link.

Ainda não foi divulgada a lista de melhorias e correções; mas assim que ela estiver disponível, completarei esse post.

Essa versão incorpora atualizações de segurança e algumas melhorias e correções de defeitos, que podem ser encontradas aqui (é necessário fazer login). A referência de linguagem também foi atualizada para a versão 3.5.

segunda-feira, 23 de novembro de 2009

Caravana GUJavaSC '09

O Caravana GUJavaSC faz a sua terceira edição em 2009. Desta vez, trará um palestrante internacional da Sun Microsystems e renomados palestrantes locais, que irão falar sobre Java e desenvolvimento ágil.

Data: 5 de dezembro de 2009 (Sábado)

Local: Fecomércio - Rua Felipe Schmidt, 785, Centro, Florianópolis-SC.


Exibir mapa ampliado

É necessária a inscrição antecipada para garantir a vaga. Para fazer a sua inscrição, clique aqui. No dia do evento deverão ser levadas 2 caixas de bombons, que serão doadas no Natal para instituições de caridade locais.

Mais informações no site oficial do evento.

domingo, 25 de outubro de 2009

TDC – "The Developers Conference" 2009

Hoje, dia 25 de Outubro, é o último dia para inscrições com desconto para o TDC 2009. O evento, um dos maiores sobre JAVA, contará com personalidades internacionais, tais como Rod Johnson (criador do Spring Framework e fundador da SpringSource), Mike Keith (líder da especificação de EJB 3 e JPA, da Oracle), Ed Burns (líder da especificação JavaServer Faces, da Sun Microsystems) e Chris Schalk (do Google App Engine), além de palestrantes brasileiros.

O evento ocorrerá nos dias 6 e 7 de Novembro, em São Paulo (ver programação); no dia 9, em Florianópolis (ver programação); e no, dia 11 no Rio de Janeiro (ver programação).

As inscrições podem ser feitas aqui - lembrando que a partir de amanhã ficará mais cara.



quinta-feira, 15 de outubro de 2009

Flex 4 SDK, Flash Builder 4 e Adobe Flash Catalyst Beta 2 Released

Nessa Segunda, dia 12 de Outubro, foi disponibilizada a versão beta 2 do SDK do Flex 4. O download pode ser feito aqui.

O Flash Builder 4 e o Adobe Flash Catalyst também tiveram suas novas versões lançadas. O Flash Builder 4 beta 2 pode ser baixado aqui e o Catalyst beta 2 pode ser baixado aqui (é necessário fazer login).

Nesse post eu falo um pouco sobre esses produtos (o post foi referente à versão beta 1, mas continua válido). O artigo "What's new in Flex 4 beta", do Matt Chotin, citado no post, já está atualizado pra versão beta 2.