mercoledì 14 settembre 2011

Windows 8 Developer Preview

La data per la versione Beta non è ancora nota, ma da oggi è disponibile per il download la Developer Preview di Window 8.

Una delle novità più importanti che coinvolgerà gli sviluppatori è la nuova API nativa WinRT che va a sostituire la Win32 introdotta con Windows NT nel 1993. Mentre Win32 è stata realizzata avendo il C in mente, WinRT è una libreria completamente Object Oriented. Non si tratta quindi di un nuovo layer costruito su Win32, ma di una nuova API nativa che permette di accedere direttamente a tutte le funzionalità del sistema operativo tramite i linguaggi C++, C#, VB ed anche JavaScript. Ovviamente Win32 non è stato rimosso e quindi tutte le vecchie applicazioni continueranno a funzionare correttamente.

Mentre Win32 è stato scritto in C, WinRT è stato scritto in C++ e tutti gli oggetti della libreria supportano la reflection che può quindi essere utilizzata dai linguaggi dinamici come il JavaScript. Questa infatti è un'altra novità, la promozione di JavaScript a linguaggio possibile per la creazione di applicazioni Windows poiché potrà accedere alle funzionalità native attraverso WinRT.

Le interfacce utente verranno realizzate con XAML per applicazioni C, C++, C# e VB. XAML non sarà eseguito sul .NET, ma sarà eseguito in modo nativo poiché le librerie che lavorano con XAML sono state riscritte in C++ e quindi compilate in codice nativo x86. Questo significa che le applicazioni scritte in C++ e XAML saranno compilate ed eseguite in codice nativo x86 esattamente come tutte le altre applicazioni C++.
Per le applicazioni Javascript, invece, si dovrà continuare ad utilizzare HTML/CSS per creare le interfacce utente ed il motore di rendering sarà lo stesso di Internet Explorer 10, anche se non gireranno effettivamente in un browser. Questo non toglie che saranno comunque disponibili tutti i controlli utente disponibili anche in C# e VB. In più sarà possibile creare nuovi controlli utente di tipo <div> al pari di quelli creati nelle applicazioni web tramite jQuery o altre librerie simili.

Ma non ci sono solo novità in aggiunta. Ci sono anche dei tagli. Spariscono le librerie GDI e pare che non saranno più supportate le Dialog Boxes. Quindi se qualcuno volesse continuare a seguire questo pattern di interfaccia utente, dovrà inventarsi qualcosa di nuovo.

Infine, sembra che la memoria di base di Windows 8 sia stata tagliata da 540 MB a 281 MB.
Nella preview scaricabile su http://dev.windows.com/ saranno inclusi anche Visual Studio 11 Express ed Expression Blend 5.

Buon divertimento!

jQuery plugin .clickout()

Chi già conosce jQuery (www.jquery.com) sicuramente conoscerà e apprezzerà le sue qualità. Per chi non lo conosce, jQuery è una libreria JavaScript veloce e concisa che semplifica la programmazione di pagine HTML dinamiche ed in particolare operazioni di manipolazione degli oggetti del DOM, interazioni Ajax, animazioni e gestione di eventi.

Proprio nella gestione degli eventi, forse l'evento più utilizzato è il "click" che si attiva quando appunto clicchiamo su un oggetto.

In alcuni casi, però, c'è la necessità di attivare un evento quando si clicca fuori dall'area di un determinato oggetto della pagina. Mentre l'evento "onclick" è un evento nativo del JavaScript e quindi è supportato da jQuery tramite la funzione ".click()" (vedi API), non esiste nessun evento nativo che permette di attivare un codice JavaScript quando si clicca fuori da un determinato oggetto.

Per risolvere questo problema ho scritto, quindi, il plugin ".clickout()" che è possibile scaricare da  http://github.com/ernstc/clickout.

Il funzionamento è simile al complementare ".click()" e di seguito ecco un semplice esempio dimostrativo:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.clickout() Test Page</title>
 
<script src="http://code.jquery.com/jquery-1.6.3.min.js"
        type="text/javascript"></script>
<script src="jquery.clickout.js" type="text/javascript"></script>
 
<script type="text/javascript">
 
  $(document).ready(function ()
  {
    $('#divTest')
      .click(function ()
      {
        $('#message').html('.click()<br/>hai cliccato dentro');
      })
      .clickout(function ()
      {
        $('#message').html('.clickout()<br/>hai cliccato fuori');
      });
  });
 
</script>
</head>
<body>
  <div id="divTest" style="padding: 5px; width:100px; height: 100px; 
       background: Blue; color: White;">
    Clicca dentro o fuori da questo quadrato.
  </div>
  <div id="message"></div>
</body>
</html>

Etichette

ajax (1) C# (3) C++ (1) click (1) clickout (1) compilatori (2) gplex (2) gppg (2) html (1) i18n (1) internazionalization (1) javascript (2) jquery (1) lex (2) object oriented (1) plugin (1) programmazione (3) software (4) svg (1) VB (1) vector graphics (1) visual studio (2) vrml (1) web (1) Win32 (1) windows 8 (1) WinRT (1) XAML (1) yacc (2) yacclextools (1)