Um conhecimento só é válido quando compartilhado.

quinta-feira, 7 de maio de 2015

Usar Componentes Dataware ou Não Dataware ?

Olá caros leitores, hoje quero trazer uma opinião minha da qual não foi da noite para o dia que a obtive, mas com alguns dias de códigos e experiência.  Acredito que você já ouviu de algum desenvolvedor ou até de você mesmo, o questionamento sobre o que usar, DBEdit ou Edit, componentes Dataware ou componentes não Dataware.

Pois é, eu mesmo a anos me fiz essa mesma pergunta, qual devo usar ? Muitos diz que não usar Dataware a aplicação fica mais leve, mais transparente, será?
Sempre usei componentes Dataware, e ao passar dos anos com o aprendizado, a cada dia uso mais OOP, mas sempre com Dataware por sua facilidade e recurso embutido.

Hoje através de muitas class, bastante rtti, meu sistema consegue se multibanco de dados, e tenho pouquíssima manutenção em código, pois os TFields são criados via runtime, neles é adicionado uma class de dicionário da qual configura cada TField, como valor padrão, displayformat, editmask, alinhamento e tudo que eu precisar.

Essa mesma class, através de rtti posso usa-la para Insert e Update, porém são usadas quando preciso de alguma coisa geradas através do código, como uma integração de um lançamento feito pelo usuário, exemplo gerar faturamento de uma NFe, e entre N necessidade dessa mesma natureza. Porem tudo que diz respeito tela a qual o usuário trabalha, é feito Insert, Update e Delete através de DataSet e na tela sempre com Dataware, para agilizar o desenvolvimento e me proporcionar recursos, dos quais vocês já conhecem dos Dataware, o que se fosse usar componentes não Dataware, teria que criar recursos para que um Edit ficasse Readonly caso não tivesse em edição, recurso para tratar um Displayformat, um EditMask, um valor default e por ai vai.

Ai vem o questionamento, que fiz acima, mais leve, mais transparente será? Vamos analisar juntos, olhando alguns componentes e suas heranças?

TDBEdit herdado de TCustomMaskEdit que por sua vez herdado de TCustomEdit
TEdit herdado de TCustomEdit
Nesse caso, veja que TCustomMaskEdit, é a única class que tem a mais entre os dois componentes e que depois dela vem TDBEdit, que e nos oferece todo o recurso e tratamento ou até mais do que teríamos que fazer manualmente, caso fossemos usar TEdit.

TDBMemo herdado de TCustomMemo
TMemo herdado de TCustomMemo
Nesse caso temos a herança da mesma class, o TDBMemo que nos oferece todo o recurso e tratamento ou até mais do que teríamos que fazer manualmente, caso fossemos usar TMemo.

TDBComboBox herdado de TCustomComboBox
TComboBox herdado de TCustomComboBox
Nesse caso também temos a herança da mesma class, o TDBComboBox que nos oferece todo o recurso e tratamento ou até mais do que teríamos que fazer manualmente, caso fossemos usar TComboBox.

TDBText herdado de TCustomLabel
TLabel herdado de TCustomLabel
Mais um caso que temos a herança da mesma class, o TDBText que nos oferece todo o recurso e tratamento ou até mais do que teríamos que fazer manualmente, caso fossemos usar TLabel.

Assim como essas class acima, se olhar as demais da paleta Dataware do Delphi uma a uma, verá que a maioria dos componentes DB, o que tem a mais são recursos implementados para facilitar nossa vida, recursos esses que na maioria das vezes são implementados novamente por quem não usa do Dataware para ter os mesmos recursos ou até menos do que os Dataware oferecem, por usar componentes não DBs.

Temos ai uma nova tecnologia Bindings que facilita a vida bastante para quem não usa Dataware, mas quem disse que é leve? Estamos trocando o código dos Dataware pelo código do Bindings, já olharam o quanto tem de código por traz dessa tecnologia, para ela seja usada em substituição aos componentes DBs? Estou falando aqui de VCL ok pessoal ? E quem disse que usando ela é mais transparente que os DBs?

Além das visões acima temos ainda hoje, computadores com multiprocessadores, alta capacidade de memória, o que me leva a abraçar a cada dia os componentes Dataware, pois com tudo o que ele me oferece mais o potencial dos equipamentos cada dia maior, não vejo que os Dataware é pesado e muito menos que não seja transparente, sendo que o código de cada componentes está a nossa disposição para quaisquer ajuste ou melhorias.

É isso ai, talvez essa minha opinião vai de front com as de outras pessoas, mas temos livre arbítrio de cada um pensar  da forma diferentes, por outro lado, penso que essa minha opinião pode vir a ajudar a alguns que estão em um dilema do que escolher, ou até mesmo se deve mudar do que tá para o que pensa.


Grande Braço.

terça-feira, 3 de março de 2015

CodeRage Brasil III - Playlist

No dia 26/02/2015 aconteceu a CodeRange Brasil III online, período de 11:00am as 20:45pm, como muitos podem não ter assistido todas as palestras segue o link da play list disponibilizada para Embarcadero para que possa ser assistido as palestras individuais.

CodeRange Brasil III - Playlist

sexta-feira, 5 de setembro de 2014

Lançamento Oficial do RAD Studio XE7 (Delphi e C++ Builder)

Embarcadero está lançando a release de número 7 da série XE do Delphi e C++ Builder, com foco em multi-dispositivos, aplicações conectadas e computação paralela.
Esta versão aperfeiçoa nosso suporte para aplicações móveis, e amplia o suporte para aplicações conectadas com Bluetooth e Bluetooth LE completamente integrados a RTL. Isso vai nos permitir a construção de apps que se conectam ao mundo, a chamada "Internet das Coisas".
Neste artigo você encontrará as principais novidades da versão XE7 para todas as áreas do produto, desde aplicações desktop até sensores bluetooth de monitoramento cardíaco

FireUI

Trata-se de um enorme avanço na maneira de construir interfaces para multi-dispositivos. Em outras palavras, estamos tornando ainda mais simples para você criar uma aplicação que vai se comportar adequadamente em qualquer dispositivo (ou tamanho de tela). O "Multi-Device Designer", aliado a novos componentes com o "MultiView" e aos "Behavior Services" (serviços que captam o comportamento do device em tempo de execução) permitem a criação de uma única app com interfaces apropriadas a cada dispositivo. Sim, isto significa um único formulário sendo compilado para desktop, smartphones, tablets, óculos, relógios e toda sorte de dispositivo onde voce encontrar um Android ou iOS rodando…


































Veja neste vídeo introdutório como tornamos isso possível: https://www.youtube.com/watch?v=QOfmoAtqh9E

Aplicações Conectadas

O novo suporte a bluetooth, totalmente integrado a RTL, permite conexão com qualquer device (gadget) que suporte esta tecnologia. Estamos falando de interagir com relógios inteligentes, medidores de batimento cardíaco, e uma infinidade de dispositivos que já estão no mercado. Suportamos bluetooth tradicional e também bluetooth LE (low energy), para aplicações de aproximação por exemplo.
Além disso, através do AppTethering, você pode conectar suas aplicações existentes em VCL ou FMX com aplicações móveis, via WiFi (introduzido no XE6) ou o novo suporte a Bluetooth.


















Nesta página você encontra uma série de exemplos e vídeos de integrações com os mais diversos dispositivos, utilizando Delphi e C++ Builder: http://www.embarcadero.com/br/products/rad-studio/gadgets-wearables
Aqui um vídeo demonstrando a integração com um sensor para prática de esportes: https://www.youtube.com/watch?v=oeyGzuC_QqU#t=53















Parallel Programming Library
Disponível para VCL e FireMonkey, permite o uso efetivo de equipamentos multi-core, incluindo aqui dispositivos móveis! Estamos falando de "parallel for loops, futures, task, thread pooling, automatic task scheduling" e outros recursos que permitem, por exemplo, executar uma consulta complexa em segundo plano sem que sua interface fique bloqueada, de uma maneira muito simples.
Neste vídeo você pode observar uma implementação do algoritmo do "Jogo da Vida" (http://pt.wikipedia.org/wiki/Jogo_da_vida) proposto pelo matemático John Horton Conway em 1970. Daí o nome de "Conway’s Game of Life":https://www.youtube.com/watch?v=Ni3JDxNFiiw. Observe no detalhe as CPUs "trabalhando" em paralelo… todo o poder de um servidor multi-core em suas mãos!















Enterprise Mobility Services (EMS)
Refere-se a uma infraestrutura pronta para aplicações distribuídas, altamente escalável, com módulos customizados carregáveis, controle de usuários e estatísticas de acesso, e armazenamento de dados.
Ficou muito difícil de compreender? Mas na verdade não é… vamos abordar por outro ângulo:
Recordem que no XE6 introduzimos um novo framework para suportar BaaS (Backend as a Service). O framework BaaS permite, entre outras coisas, que você armazene dados nas núvens em um dos provedores suportados (Kinvey, Parse, App42), em formato de objetos JSON, sem que você tenha que construir uma aplicação servidora para isso. São infra-estruturas prontas que oferecem gestão de usuários, estatísticas de uso e armazenagem de dados, entre outras como push notification para qualquer plataforma. Neste post você aprende como criar sua primeira app conectada a um serviço como estes: http://blogs.embarcadero.com/sarinadupont/2014/04/15/introducing-rad-studio-xe6-and-baas/.
Muito bem, nosso EMS, presente no Delphi e C++ Builder XE7, permite que você crie e hospede seu próprio serviço BaaS. Seria algo como possuir seu "Kinvey" ou "Parse" particular, incluindo serviços como gestão de usuários, estatísticas de uso das APIs e armazenamento de dados, tudo em um único pacote.





















Um servidor EMS pode ser distribuído como um módulo do IIS ou do Apache, neste momento apenas para plataforma Windows.
O RAD Studio traz uma licença de desenvolvimento do EMS para até 5 usuários, a partir da edição Professional. Este produto terá uma licença de distribuição sempre baseada em quantidade de usuários finais. Ou seja, este produto deverá ser licenciado a parte do RAD Studio, Delphi e C++ Builder para distribuição final. E isto se justifica porque, além da tratar-se de uma infraestrutura pronta para distribuição imediata, ele ainda traz de forma integrada licenças do Interbase Server (para servidores e desktops) e Interbase ToGo (para mobile), ambos com criptografia e capacidade ilimitadas.
Em resumo: uma solução completa que inclui suporte a APIs customizadas, acesso a dados, gestão de usuários, estatísticas e armazenamento, tudo integrado e pronto para deployment. E o melhor, tudo baseado em tecnologia standard, acessível por qualquer outra plataforma ou linguagem de desenvolvimento.
ps: em outras tecnologias você pode também encontrar esta infraestrutura referenciada como MEAP (Mobile Enterprise Application Platform).
Maiores detalhes sobre formas de licenciamento e custos em breve.

IDE, VCL, FireMonkey, FireDAC e muito mais!

Vou tentar resumir aqui os principais pontos em termos de novidades e melhorias para a IDE, VCL, FMX, FireDAC e Utilitários. Todos os demais detalhes você pode conferir diretamente nesta página do Wiki do produto: http://goo.gl/7fnf9K.
IDE = Guided Tours (permite aprender sobre o RAD Studio de maneira interativa), gerenciamento do "Entitlement List" via Project Options, controle de versão GIT integrado, além de SubVersion, adição de bibliotecas Java externas via Project Manager…
FMX = Mapeamento nativo de controles iOS (TEdit e TCalendar), suporte para Multi-Monitor, Full-Screen para Android KitKat, Pull-to-Refresh para TListView no iOS e Android, FMX Save State…
VCL = Novo JumpList para o ToolBar no Win7 e Win8, TParallel (System.Threading), AppTethering e Bluetooth - incluindo BlueTooth LE para Windows 8, OmniXML para melhor performance no processamento de arquivos XML…
FireDAC = Suporte para streaming no MSSQL, suporte para ETL através do novo TFDBatchMove (TFDBatchMove, TFDBatchMoveTextReader, TFDBatchMoveTextWriter, TFDBatchMoveDataSetReader, TFDBatchMoveDataSetWriter, TFDBatchMoveSQLReader, and TFDBatchMoveSQLWriter), novo driver específico para IBLite/IBToGo, novos recursos de serialização, leitura e gravação de Metadata (CreateTable, GenerateCreateTable, GenerateDropTable, etc.)…
Novo PAServer para MAC = com suporte a multiplas instâncias e interface visual de configuração em OSX…
Novo Java2OP.exe = Java para Object Pascal! Permite a geração das classes correspondentes em Object Pascal para chamadas a bibliotecas Java, podendo importar um JAR, uma classe ou um subset de uma classe da API do Android…











Resumo
Como vocês podem ver trata-se de uma das mais completas versões já lançadas pela Embarcadero. E observem que ainda não abordamos todos os assuntos, como suporte a "Bluetooth Proximity" nativo, assunto de nosso próximo post/vídeo.
Tentado em provar o novo RAD Studio, Delphi ou C++ Builder XE7??? O trial já está disponível para download: https://downloads.embarcadero.com/free/rad_studio

RAD Studio XE7 permite criar aplicações para diferentes dispositivos com um só código


A Embarcadero lançou, nesta última terça-feira, a nova versão de seu RAD Studio, a XE7. Dedicada a desenvolvedores de aplicações Delphi/Object Pascal e C++, a edição da IDE traz como diferencial a capacidade de criar programas para múltiplas plataformas baseados em um só código, como explicou a INFO Fernando Rizzato, Lead Software Consultant da empresa na América Latina.
Para isso, a solução usa diferentes compiladores nativos, voltados para arquiteturas (ARM, x86 e x64) e plataformas (Android, iOS, Windows e Mac) distintas. Conforme contou Rizzato, o resultado são aplicativos com interfaces adaptadas para os respectivos aparelhos, baseados em um mesmo código-fonte e compatíveis com cada um dos sistemas – mais ou menos como faz a Microsoft com o Visual Studio e a Apple com o XCode, mas limitados aos próprios SOs.
A ideia da empresa com isso é, basicamente, acabar com a necessidade de duas equipes de desenvolvimento especializadas em ferramentas distintas – como o XCode, da Apple, e o Java, para o Android. Além disso, a solução quer fazer desenvolvedores “fugirem” do HTML5 e do JavaScript para a criação de aplicações multiplataforma, consideradas por Rizzato menos eficientes, seguras e integradas ao hardware do que as de código nativo – ponto que, segundo ele,  fez o Facebook desistir de aplicativos do tipo, por exemplo.
Junto com  José Eugênio Braga, presidente da Embarcadero no Brasil, o executivo da empresa conversou rapidamente com INFO para falar de algumas das novidades do novo RAD Studio XE7 e explicar um pouco do funcionamento da solução. Confira a entrevista a seguir – e se tiver interesse, baixe a versão demo, que traz o Delphi XE7 por aqui.
Primeiro, quais as principais diferenças da versão XE7 para as anteriores do RAD Studio?
Fernando Rizzato: O grande diferencial é que agora, em um só produto, você pode criar uma aplicação para vários sistemas com um só código. Nós compilamos de forma nativa para cada uma das plataformas, gerando uma compilação nativa para processador ARM, tanto no Android quanto no IOS, ou para Intel de 32 ou 64-bits, em Mac ou Windows.
O produto também suporta Bluetooth de uma maneira extremamente simples, aproveitando essa visão de conectividade relacionada à internet das coisas. Arrastando e soltando componentes, é possível fazer uma aplicação falar com qualquer dispositivo Bluetooth – um medidor de batimentos cardíacos, smartwatches e até um Google Glass. Sensores de presença também entram nessa linha, mesmo aqueles de tecnologia mais específica da Apple, os iBeacons. Se você está em uma exposição e usando um app do museu no smartphone, basta se aproximar de um determinado objeto para receber informações de um aparelho próximo ao quadro ou escultura, por exemplo. Ou caso esteja em um shopping, andando, você pode receber um alerta de promoção da loja que está na sua frente. Suportamos esse tipo de função no produto, e com o desenvolvimento ainda 100% visual.
Como vocês conseguem tornar essa compilação para múltiplas plataformas possível? E há planos de incluir o Windows Phone e outros sistemas nessa lista?
Fernando Rizzato: Temos um compilador para cada uma das plataformas suportadas. Um funciona para Intel, x86, enquanto outro é dedicado aos dispositivos com chip ARM. E ainda abriremos novos horizontes, porque outros concorrentes estão por vir. Não acreditamos que o mercado vá ficar polarizado, já que ele é muito grande para apenas dois ou três jogadores [como é o caso do mercado de smartphones]. Outros nomes devem surgir – temos a iniciativa do pessoal do Ubuntu, que tem ganhado apoio, só para citar um exemplo. Quanto ao WP, ainda não suportamos, mas é algo que ainda está no cronograma do produto.
Essa estratégia envolvendo múltiplas plataformas foi consolidada no RAD Studio XE6, mas quando exatamente a Embarcadero começou a olhar para os dispositivos móveis?
Fernando Rizzato: Falando um pouco do histórico, a versão XE4 – hoje lançamos duas edições por ano – foi nossa primeira a suportar smartphones e tablets rodando iOS. O XE5 agregou a compilação para Android, enquanto o XE6 e agora o XE7 trouxeram outros frameworks, como esses para conectividade Bluetooth, Wi-Fi e Tethering. Hoje, consigo fazer tethering entre aplicações mesmo de desktop para mobile e vice-versa. Ou seja, assim como posso parear dois dispositivos e trocar música, posso parear uma aplicação desktop em Delphi – mesmo as desenvolvidas em VCL, o framework Windows – e enviar ações e dados para um aplicativo mobile, em um smartphone conectado ao computador por Bluetooth ou Wi-Fi.
São frameworks que estão sendo agregados para aumentar essa integração entre os dois lados. As pessoas ainda falam muito de migração para mobile, mas não vemos como uma migração. Estamos estendendo aplicações para o mobile. Há certas características e programas que vão continuar nos desktops – eles precisam de um processamento, de um banco de dados, de um “input” rápido de comandos por teclado. Mas ao mesmo estendemos o suporte dessas aplicações para os dispositivos móveis, e tentamos integrar esses dois “mundos” com nosso produto.
E qual a participação do RAD Studio hoje no mercado?
José Eugênio: Na verdade, não temos nenhuma pesquisa feita sobre isso. Mas o mercado de C++ é grande, atualmente, e algo que temos visto acontecer com o Delphi é um aumento muito grande na procura vinda de universidades. A partir do momento que conseguimos torná-lo uma linguagem cujo código-fonte serve em diferentes aplicações, o mercado acadêmico o procurou para ensinar a alunos com desenvolver para múltiplas plataformas.
Fernando Rizzato: Exatamente. A partir das versões XE, quando começamos a suportar as plataformas móveis, evoluímos ano a ano, com nossa base de usuários e número de licenças obtidas aumentando mundialmente. E com base em pesquisas, a comunidade de desenvolvedores C e C++ é a maior [ou ao menos uma das maiores].

domingo, 28 de julho de 2013

DBXpress x FireDAC x TDataSetProvider + TClientDataSet

Olá a todos leitores, vou bloggar hoje sobre a nova engine de acesso a banco de dados da Embarcadero e no mesmo assunto sobre a DBXpress engine que era a promessa da Embarcadero e que acabou indo de ralo abaixo depois da nova aquisição.

Quem é programador em delphi mais antigo (nem precisa ser igual a mim desde a versão do delphi 2), sabe que essa é a terceira engine de acesso a dados mudada no delphi, para quem não sabe as primeiras versões vinham com o famoso BDE que ficou muito tempo sendo a engine de acesso a dados do Delphi. A algum tempo atras não muito tivemos a noticia que o BDE continuaria vindo junto ao Delphi, mas seria descontinuado, bom isso foi um impacto, pois a maioria estavam totalmente amarrados a ela, e teria que mudar toda sua estrutura e forma de acesso dados com a nova tecnologia oferecida junto ao Delphi, o DBXpress.

O DBXpress mudava toda a filosofia de acesso aos dados do banco que a maioria dos desenvolvedores conheciam, pois usavam Table e não Query, sem contar a linha de aprendizado, a mudança era tanto que até hoje tem sistemas usando o BDE mesmo sem sofrer melhorias.

Recentemente recebemos uma noticia parecida sobre o DBXpress, a Embarcadero adquiriu a engine UniDAC e mudou seu nome para FireDAC, engine essa que será agora a principal ferramenta de acesso a dados vinda com o Delphi, e como disse a noticia é parecida por vim com o anuncio que o DBXpress continuará a vir, mas não sofrerá melhorias, a diferença é que a linha de aprendizado na mudança do DBXpress para FireDAC será bem pequena para quem usa o essencial.

Fica em nossa mente, uma interrogação. Será até quando usaremos o FireDAC e teremos que mudar para outra engine?

Baseado nessa interrogação, fica aqui minha dica. Eu quando sai do BDE olhei o IBX, mas vi que ficaria amarrado ao Firebird, mas não sabia até quando pois essa engine é de acesso ao Interbase, muita gente usa para o Firebird, mas não sabe até quando manterá compatibilidade de acesso e conseguirá continuando a usa-la assim.

Nessa linha de pensamento, mudei para o DBXpress, mas usando o TSQLDataSet + TDataSetProvider + TClientDataSet, aos olhos dos mais analistas de código para ter totalmente o beneficio da mais nova engine o FireDAC, não se deveria usar o TClientDataSet, pois o TADQuery, tem o mesmo recurso para acesso a dados (menos para DataSnap) e com ele se tem maior agilidade em acesso a dados.

Mas a questão que vi é que além desse beneficio preciso pensar  também na vida útil do FireDAC com a Embarcadero, pois se usando a tecnologia (Engine) + TDataSetProvider + TClientDataSet, fica bem facil de mudar de estrutura de acesso a dados, pois o TClienteDataSet, esse não irá continuar sem melhorias, pois ele faz parte da tecnologia DataSnap, e essa a Embarcadero não trocou, nem deixará de atualiza-la, dessa forma espero que o TClientDataSet passe por um refectory e seja tão rápido quanto se diz ser o TQDQuery, quem sabe? Sem contar que se num futuro o FireDAC deixar de ser o engine principal, e a Embarcadero comprar outra engine, fica facil de mudar novamente, como esta sendo dessa vez.

É isso ai, espero que a dica tenha sido valiosa para você amigo leitor, grande abraço e fique com Deus.

Total de visualizações

Postagem em destaque

ORMBr - Mapeamento objeto-relacional

Mapeamento objeto-relacional ( ou ORM, do inglês: Object-relational mapping ) é uma técnica de desenvolvimento utilizada para reduzir...

Todo os direitos reservados.. Tecnologia do Blogger.

Seguidores