mercoledì 29 giugno 2011

Rivendicazione di brevetto di Oracle nei confronti di Google prende un colpo

Causa di Oracle nei confronti di Google per presunte violazioni di brevetti Java nel sistema operativo Android si trova ad affrontare una battuta d'arresto potenziale, a seguito di una sentenza della US Patent & Trademark Office.

Google aveva precedentemente chiesto l'USPTO di riesaminare una serie di brevetti di Oracle. L'USPTO ha respinto 17 dei 21 crediti in US Patent No. 6.192.476, secondo una sentenza datata 16 giugno. La tecnologia Groklaw blog prima legge riferito la sentenza il Mercoledì.


Il giudice del caso ha chiesto a entrambe le parti per snellire il numero dei sinistri che stanno facendo, al fine di rendere il caso più facile da provare. La data del processo è stata fissata per il 31 ottobre.

"Se questo riesame è esemplare di quello che Oracle si può aspettare in ciascuno degli altri riesami, Oracle avrà difficoltà a trovare sostiene che si può affermare con successo nei confronti di Google, e ci si trova enigma di Oracle", ha scritto Groklaw. "Oracle ha sia d'accordo con la direttiva della corte di limitare il numero dei crediti sarà affermare al processo, o è probabile che il tribunale si limiterà a sospendere il processo fino a quando il riesami sono completi."

Tuttavia, Oracle ha molteplici possibilità di proporre appello contro le decisioni prese in un riesame del brevetto, ovvero la sentenza 16 giugno potrebbe non essere definitiva.

Una portavoce di Oracle ha voluto commentare.

Oracle citato in giudizio Google lo scorso anno nel corso degli presunte violazioni Java in Android. Google ha negato ogni accusa.

Un esperto Oracle danni ha stimato che se Google è determinato ad avere violato brevetti di Oracle, sarebbe dovere Oracle fino a $ 6,1 miliardi, secondo una recente richiesta presentata al tribunale. Google ha sfidato esperto di Oracle metodologia utilizzata.


Red Hat Arquillian app testing technology disponibile dal mese prossimo

di Paul Krill

Servire come coordinatore di prova, Arquillian consente agli sviluppatori di scrivere test di integrazione cui il codice in fase di test viene eseguito in ambiente in cui verrà eseguito in produzione, ha dichiarato Dan Allen, Red Hat, principale ingegnere del software.Già offerto in una fase di release candidate, Arquillian, pronunciato "ar keelian," dovrebbe essere disponibile in una versione finale il prossimo mese, probabilmente come parte delle attrezzature in JBoss Enterprise Application Platform 6.


"Arquillian consente test di integrazione portatile per applicazioni aziendali", ha detto Allen, che ha parlato alla conferenza Jax a San Jose, California, per il Giovedi. Con Arqullian, la comunità JBoss di Red Hat cerca di ridurre l'onere per gli sviluppatori, fornendo un cablaggio semplice test del ciclo di vita di astrarre il recipiente e la distribuzione dalla logica del test. Gli sviluppatori possono produrre una gamma di integrazione per le applicazioni enterprise Java.Arquillian gestisce gli aspetti dell'esecuzione del test, tra cui la gestione del ciclo di vita del contenitore, bundling la classe di test con le classi dipendenti e risorse in un archivio schierabili e l'acquisizione dei risultati e fallimenti.


Mentre inizialmente destinati per Java, i due anni di progetto Arquillian è "ramificazione molto rapidamente", ha detto Allen. E 'già è stato usato per Ruby on Rails test tramite la versione JRuby di Ruby. Inoltre è stato utilizzato con il linguaggio Scala che, come JRuby, gira su Java Virtual Machine. Arquillian è parte dell'iniziativa Testing JBoss. Il nome Arquillian è stato derivato dalle creature che ha combattuto bug nel film "Men in Black", ha detto Allen. "Si può tipo di pensare ad esso come un battler bug."

Corso Java - Corsi Java - Corsi programmazione Java

Corso programmazione Android - Certificazione Android

Il tuo prossimo lavoro: sviluppatore di applicazioni Mobile?

Da Beth Stackpole

La domanda del mercato picchi per le applicazioni di girare su IOS , Android , sistema operativo e tutto ciò che la forza di volontà la prossima ondata di dispositivi intelligenti, le aziende si trovano ad affrontare una carenza disviluppo mobile talento. Per i professionisti IT con competenze di programmazione, il divario rappresenta una nuova opportunità di intraprendere un makeover carriera.

Per mettere la domanda in prospettiva, si consideri che Apple totalizzato 1,78 miliardi dollari di fatturato applicazione nel 2010, e globale delle vendite applicazione mobile sono previsti a colpire 4 miliardi dollari quest'anno, secondo IHS ricercatore di mercato.

Ma chi sta sviluppando tutte queste applicazioni? Nella sua recente "Crunch America Talent Tech" di studio, IT Dice.com luogo di lavoro ha scoperto che offerte di lavoro per gli sviluppatori di Android salito 302 per cento nel primo trimestre di quest'anno rispetto al primo trimestre del 2010; annunci per iPhone legati posizioni rosa 220 per cento nel periodo di tempo stesso.

Elance.com, un sito web per i liberi professionisti, richiedere informazioni comparabili: Nel primo trimestre del 2011, c'erano 4.500 posti di lavoro degli sviluppatori mobili pubblicati sul sito - con un incremento del 101 per cento rispetto al numero di offerte di lavoro simili nello stesso trimestre dello scorso anno .

Il numero totale di annunci di lavoro sul sito sono cresciute a un tasso del 52 per cento in quello stesso lasso di tempo, indicando che lo sviluppo cellulare come un segmento di carriera può essere in crescita due volte più veloce del mercato del lavoro complessivo, secondo Ellen Pack, vice presidente del marketing Elance.com.

Non sono solo le aziende tech che sono a caccia di talenti sviluppo mobile. Oggi, tutti i tipi di aziende di prodotti e servizi stanno rimescolando per uscire con le applicazioni, così come, poco tempo fa, erano al lavoro per stabilire una presenza su siti di social networking.

"E 'diventata una delle scatole che devi controllare per essere un marchio di successo," Pack dice. E che traduce la realtà in domanda repressa per sviluppatori di applicazioni. "E 'una di quelle aree dove c'è più domanda che offerta perché non ci sono sviluppatori mobili abbastanza grande là fuori".

Mentre ci sono ampie piscine del Web e Java lo sviluppo dei talenti, professionisti con esperienza edificio applicazioni native per iPhone di Apple o iPad , o per il BlackBerry o uno dei dispositivi più recenti Android, sono difficili a causa della relativa novità di queste piattaforme.

Gli sviluppatori e designer che comprendere appieno i vincoli e le opportunità offerte dal patrimonio più piccoli reale e interfacce touch della piattaforma per smart device sono molto richiesti.

Gli osservatori di mercato dicono che è la capacità di cogliere mobile nuove regole per l'uso, e non semplicemente la capacità di padroneggiare competenze di programmazione, che separa chi ha un'affinità per lo sviluppo mobile da coloro che proprio non capisco.

"Quando sei la creazione di applicazioni Web, [che] hanno l'intero desktop. Ci sono cose che si possono ottenere via con da un punto di vista del design che semplicemente non si traducono in un dispositivo mobile", osserva Eric Knipp, un analista di Gartner specializzata in Web e cloud computing . "Non si tratta solo di rendere le cose più piccole o cose scindendo in schermate separate. Sviluppatori sono stati addestrati a pensare che più funzionalità equivale ad applicazioni migliori, ma su dispositivi mobili, questo è semplicemente falso."

Tutti i segni indicano che c'è una forte domanda per gli sviluppatori di applicazioni mobile, ma che la domanda non si traduce in offerte diffusa di posti a tempo pieno in IT aziendali squadre ancora.Questo perché molte aziende con magri budget IT non sono pronti a impegnarsi per l'assunzione altamente specializzato, e quindi costosi, talento sviluppo mobile.

Alcune organizzazioni sono progetti di outsourcing applicazione mobile a società di consulenza sviluppo boutique e negozi fino a quando non hanno bisogno di più pronunciato.

Questa è la strategia Aspen Sci Co. 's. Ad oggi, la stazione sciistica del Colorado è uscito con un paio di applicazioni mobili, tra cui uno strumento che consente ai manager condotta ad hoc, smartphone basato su rilevazioni di clienti in tutto il villaggio, e un altro che offre ai clienti l'accesso a un array di dati località, tra cui condizioni meteorologiche, lo stato ascensore e eventi quotidiani.

Dal Sci Aspen non considera lo sviluppo del software una competenza di base e non può ospitare un grande staff IT, outsourcing lo sviluppo mobile sembrava il piano più efficiente - almeno nel breve periodo - che è perché l'azienda si è rivolta ad un esterno consulenza per sviluppare la sua applicazioni mobili.

"Mobile è un ambiente in rapida evoluzione - nella misura in cui è legato a quello strumento di gestione dei contenuti si utilizza o quali dispositivi si vuole sostenere", spiega Paolo Maggiore, amministratore delegato di IT di Sci Aspen . "Andare fuori ci aiuta a tenere il passo."

Supermedia, che offre servizi di marketing e pubblicità per le piccole e medie imprese, anche inizialmente pensato di outsourcing sarebbe più conveniente rispetto sviluppo in-house.

Ma un paio di anni nella sua iniziativa mobili, Supermedia realizzato la disciplina era troppo centrale per il proprio modello di business per continuare a pagare consulenti esterni per sviluppare applicazioni, secondo Michael Dunn, CIO della società. Poco più di un anno fa, l'azienda ha deciso di istituire un team interno di costruire aggiornamenti regolari e di migliorare le sue applicazioni per supportare il numero crescente di piattaforme mobili.

Consapevole della carenza di talenti sviluppo qualificato, Supermedia ha adottato una serie di passi per evitare di essere catturati in una crisi.

In primo luogo, cross-addestrati due principali sviluppatori interni Java per imparare le nuove competenze, e poi seminato il resto della sua squadra alle prime armi con i laureati recenti. "Il mercato è decollato così veloce e così ci fu una grande richiesta per gli sviluppatori, questo ci fa assumere immediatamente, ed è molto più conveniente", spiega Dunn.

Gli sviluppatori esperti di Java è venuto fino a velocità abbastanza rapidamente su specifiche competenze Android e Ios-correlate, dice Dunn, grazie al loro set di base di competenze.

Con l'esperienza del dominio di nuovo sotto la cintura, gli sviluppatori veterani sono stati poi in grado di laureati mentore in arrivo, permettendo Supermedia di sfruttare il suo investimento nella loro formazione. Le nuove assunzioni "sono lo sviluppo delle competenze di base e una certa conoscenza di sviluppo di applicazioni mobili - forse non su scala commerciale, ma l'hanno fatto in un ambiente accademico come un progetto", spiega Dunn.

Attualmente, Supermedia ha 10 specialisti applicazione mobile all'interno dei suoi 150 persone, gruppo di sviluppatori, che fa parte di una impresa personale IT di quasi 300 persone.

martedì 28 giugno 2011

JavaScript Minifier che non si rompa il codice (in Perl)


Ho cercato un programma di minimizzazione JavaScript che non si rompe codice funzionante ma nessuno apparve. Ho scritto uno in Perl (spero!). Se il codice inserito JavaScript manca un punto e virgola o ha un codice similea + + + b che è ok. I commenti condizionali di Internet Explorer vengono mantenuti nell'output. Il mio codice è stato ispirato da Douglas Crockford JSMin ma è una riscrittura completa per aggiungere queste funzionalità.

Ho caricato il modulo Perl di CPAN JavaScript:: Minifier

Se si desidera scaricare il modulo in questo momento dal mio repository subversion ...

svn co http://dev.michaux.ca/svn/random/JavaScript-Minifier/ cd JavaScript Minifier perl Makefile.PL make test

Sto anche lavorando ad un programma di minimizzazione CSS in Perl che non è ancora ben collaudato: svn co http://dev.michaux.ca/svn/random/CSS-Minifier/

Perché Perl vi chiederete? Perché questo è il linguaggio server-side utilizzato dove lavoro.


Corso Java - Corsi Java - Corsi programmazione Java

Corso programmazione Android - Certificazione Android


Il modello di comando in JavaScript: Encapsulating chiamate Proprietà Funzione


L'operatore punto fa parte di JavaScript incorporato nel paradigma object-oriented. Come tutti i paradigmi integrato in qualsiasi lingua, ci saranno momenti in cui il paradigma non supporta le caratteristiche richieste per una particolare applicazione. Abbiamo bisogno di fuggire il paradigma e costruire le caratteristiche di cui abbiamo bisogno. In JavaScript, costruendo la nostra funzione di operatore punto è un modo indiretto per rendere oggetto chiamate proprietà di funzione e sfuggire il built-in paradigma. Questo apre le porte ad avere Ruby built-in missing_method e mixin. Ciò consente anche di programmazione orientata agli aspetti. Ecco alcuni esempi di rapida costruzione di una proprietà funzione chiamatainviare per sostituire l'operatore punto di regolare proprietà look-up catena. Questo incapsulamento di una chiamata di funzione dalla proprietàmandare proprietà funzione è anche conosciuto come "il modello di comando".

Ruby method_missing

 var myObj = {inviare: la funzione (metodo) {var val; args var = []; for (var i = 1, len arguments.length =; i 

Ruby mixin

 var alfa = {pippo: function () {return "alfa pippo";}}; beta var = {bar: function () {return "beta del bar";}}; myObj var = {include: function (mixin) {questo . mixin = this.mixins | | []; this.mixins.push (mixin);}, inviare: la funzione (metodo) {if (questo [metodo]) {return questo [metodo] ();} for (var i = 0, len this.mixins.length =; i  

Programmazione orientata agli aspetti

 var myObj = {addBeforeFilter: funzione (metodo, filtro) {this.beforeFilters = this.beforeFilters | | {}; this.beforeFilters [metodo] = this.beforeFilters [metodo] | | []; this.beforeFilters [metodo]. push (filtro);}, addAfterFilter: funzione (metodo, filtro) {this.afterFilters = this.afterFilters | | {}; this.afterFilters [metodo] = this.afterFilters [metodo] | | []; this.afterFilters [ . metodo] push (filtro);}, inviare: la funzione (metodo) {var val if (this.beforeFilters [metodo]) {for (var i = 0, len = this.beforeFilters [metodo] lunghezza; i.  

Un nuovo paradigma OOP per JavaScript

Quello che segue è la prova di principio che JavaScript incorporato nel paradigma OOP prototipo basato non è il paradigma OOP solo tu puoi utilizzare in JavaScript. Il seguente blocco di codice definisce un nuovo paradigma OOP. Questo paradigma non è una replica di ma è ispirato dalle caratteristiche OOP il Ruby. Questi includono eredità, mixin, super e propertyMissing. Questo nuovo sistema potrebbe essere esteso per includere programmazione orientata agli aspetti e altre opzioni in quanto il nuovo sistema controlla il look-up catena di proprietà.

   classi var = {}; defClass funzione (klass, costruttore) {classi [klass] = {costruttore: costruttore, mixin: [], instanceProperties: {}};} function defInstanceProperty (klass, proprietà, valore) {classi [klass] . instanceProperties [proprietà] = valore;} function mixin (klass, mixinKlass) {classi [klass] mixins.push (mixinKlass);.} function estendere (klass, parentKlass) {classi [klass] parentKlass = parentKlass;.} function istanziare (klass) {var tipo di oggetto = {: klass}; args var = [oggetto] for (var i = 1, arguments.length len =; i 

Ora usiamo questo nuovo paradigma OOP. Si noti che sotto non usiamo nessuna delle usuali parole chiave OOP JavaScript o zucchero: '.' "Questo",,'[]', 'nuovo'. Perché siamo liberi dal costruito nel paradigma possiamo usare le caratteristiche del nuovo paradigma OOP: eredità, mixin, super, e propertyMissing.

   defClass ('Persona', function (self, primo, ultimo) {setInstanceProperty (self, 'prima', prima); setInstanceProperty (self, 'ultimo', ultimo);}); defInstanceProperty ('persona', 'toString', funzione di (auto) {return inviare (self, 'primo') + '' + invio (self, 'ultimo');}); defInstanceProperty ('persona', 'propertyMissing', funzione di (auto) {return 'immobile manca qui ';}); defInstanceProperty (' persona ',' età ', 29); / / per secoli la gente di default sono 29 defClass (' dipendenti ', function (self, primo, ultimo, id) {superConstructorSend (' dipendenti ', auto , primo, ultimo); setInstanceProperty (self, 'id', id);}); estendere ('dipendenti', 'Persona'); defInstanceProperty ('dipendenti', 'toString', funzione di (auto) {return superSend (' dipendente ', l'auto,' toString ') +' '+ invio sé (,' id ');}); defClass (' Manager ', funzione di (auto, primo, ultimo, id, dipartimento) {superConstructorSend (' Manager ', auto, primo, ultimo, id); setInstanceProperty (self, 'reparto', dipartimento);}); estendere ('Manager', 'dipendenti'); defInstanceProperty ('Manager', 'toString', funzione di (auto) {return superSend ('Manager', l'auto, 'toString') + '' + invio (self, 'ufficio');}); var = ted istanziare ('persona', 'Ted', 'Enrico'); inviare (Ted, 'toString'); / / Ted Henry inviare (Ted, 'primo'); / / Ted var = franca istanziare ('Manager', 'Frank', 'Miller', 21, 'Conti'); inviare (Frank, ' toString '); / / Frank Miller 21 defClass Conti (' TheMixin '); mixin (' dipendenti ',' TheMixin '); defInstanceProperty (' TheMixin ',' toString ', funzione di (auto) {return' il disgregatore mixin '; }); defInstanceProperty ('TheMixin', 'foo', funzione di (auto) {return 'foo';}); defInstanceProperty ('TheMixin', 'bar', 'Greep'); inviare (Frank, 'toString') / / il distruttore mixin 21 Conti inviare (Frank, 'foo'); / / l'invio foo (Frank, 'foosdf'); / / proprietà manca qui inviare (Frank, 'età'); / / 29 setInstanceProperty (frank , 'età', 33); inviare (Frank, 'età'); / / 33 inviare (Ted, 'età'); / / 29 inviare (Frank, 'bar'); / / Greep 

Sintassi di questo paradigma OOP è tutte le chiamate di funzione. Qualcuno potrebbe dire che non è bella come il built-in basati su prototipi paradigma, ma non è possibile aggiungere zucchero sintattico per la lingua. Se un sistema OOP con le altre funzioni è necessario poi ricadere sulla flessibilità delle chiamate di funzione, come fa questo esempio, è certamente una potente tecnica.

Corso Java - Corsi Java - Corsi programmazione Java

Corso programmazione Android - Certificazione Android

Classi SICP per JavaScript

Attenzione: Questo articolo è rivolto ai programmatori JavaScript.Parentesi stanno arrivando, ma solo per breve tempo e si può gestire e sarà un bene per voi.

In Struttura e interpretazione dei linguaggi di programmazione Seconda edizione (SICP) a pagina 182, gli autori introducono il concetto dimessaggio che passa con il seguente esempio in Schema di una funzione complessa costruttore numero.

(Define (make-da-real-imag xy) (define (invio op) (cond ((eq? Op 'real-parte) x) ((eq? Op' imag-parte) y) ((eq? Op ' magnitudo) (sqrt (+ (piazza x) (piazza y)))) (angolo (eq op ') (atan yx)) (altro (errore "Uknown op - MAKE-DA-REAL-IMAG"? op)) )) spedizione)

La cosa importante da notare qui è che il valore restituito dal make-da-real-imag funzione di costruzione è in realtà una procedura di spedizione che è possibile chiamare con un argomento del messaggio. È possibile inviare messaggi per ottenere la parte reale e la portata dei numeri complessi.

(Definire c (make-da-real-imag 3 4)) (c 'real-parte), 3 (c' imag-parte), 4 (c 'grandezza), 5 (c' angolo); 0,927295218001612 (c ' asdf); ERRORE: Uknown op - MAKE-DA-REAL-IMAG: asdf

Vediamo quello che il codice sopra appare così in JavaScript, la nostralingua franca .

makeFromRealImag funzione (x, y) {funzione spedizione (op) {switch (op) 'realPart' {caso: x ritorno; caso 'imagPart': y ritorno; 'grandezza' caso: return Math.sqrt (x * x + y * y); caso 'angolo': return Math.atan2 (y, x); default: 'op Sconosciuto - makeFromRealImag:' gettare op +;}} spedizione di ritorno;} var c = makeFromRealImag (3, 4); c ('realPart'); / / 3 c ('imagPart'); / / 4 c ('magnitudo'); / / 5 c ('angolo'); / / 0,9272952180016122 c ('asdf'); / / "Sconosciuto op - makeFromRealImag: asdf "

Ora, questo probabilmente non assomiglia a nessun orientato agli oggetti JavaScript che avete visto prima ma illustra un punto importante. In JavaScript, possiamo rappresentare l'idea di un oggetto in funzione dei suoi messaggi. La funzione di costruzione restituisce una funzione di spedizione che hai scritto che può inviare qualsiasi messaggio alcun modo che si desidera. Questo dà immediatamente Spidermonkey di __nosuchmethod__, Smalltalk è doesNotUnderstand , e Ruby method_missing . Roba potente ma purtroppo il codice JavaScript corre sopra molto lentamente.Siamo in grado di muoversi verso uno stile JavaScript più veloce e più familiare.

SICP pagina 223, introduce l'idea di oggetti mutabili, ma il punto più interessante è la variazione della procedura di spedizione.

(Define (make-saldo) (define (prelevare quantità) (if (> = importo equilibrio) (begin (equilibrio set! (- ammontare del bilancio) l'equilibrio)) "fondi insufficienti")) (define (importo del versamento) (set ! saldo (saldo + somma)) equilibrio) (define (invio m) (cond ((eq m? 'recedere) ritirare) ((eq m?' deposito) di deposito) (il resto (errore "Richiesta sconosciuta - MAKE-CONTO "m)))) spedizione) (definire conto (make-conto 10)) ((conto 'deposito) 5), 15 ((conto' recedere) 3), 12

Conversione questo a JavaScript abbiamo le seguenti.

funzione makeAccount (saldo) {funzione ritirare (importo) {if (saldo> = importo) {Bilancia = - importo; equilibrio di ritorno;} return "fondi insufficienti";} deposito funzione (importo) {= saldo + importo; ritorno bilancio;} function spedizione (m) {switch (m) {case 'ritirare': ritorno recesso; 'deposito' caso: cauzione di ritorno; default: buttare "richiesta Sconosciuto - makeAccount:" + m;}} spedizione di ritorno;} var = conto makeAccount (10); conto ('deposito') (5); / / 15 account ('ritirare') (3); / / 12

Il modo in cui la spedizione funzione funziona per gli account è molto diversa che nel caso dei numeri complessi. Nel caso dei numeri complessi, quando un messaggio è stato inviato alla spedizione funzione, eseguita l'operazione associata (cioè il metodo) immediatamente. Al contrario, l'account spedizione funzione restituisce il metodo associato al messaggio e che il metodo può essere chiamato.

Questo è molto simile a come JavaScript reciever.message (arg) opere sintassi e possiamo passare ad un più familiare stile orientato agli oggetti JavaScript.

funzione makeAccount (saldo) {funzione ritirare (importo) {if (saldo> = importo) {Bilancia = - importo; equilibrio di ritorno;} return "fondi insufficienti";} deposito funzione (importo) {= saldo + importo; ritorno bilancio;} {ritirare ritorno: ritiro, deposito: deposito};} conto var = makeAccount (10); account.deposit (5); / / 15 account.withdraw (3); / / 12

In quest'ultima versione, abbiamo smesso di scrivere la nostra logica spedizione e l'uso di JavaScript proprietà incorporata ricerca. Questo aumenta la velocità in modo significativo. Abbiamo perso la capacità di fare il __noSuchMethod__ tipo di invio quando si utilizzano standard ECMAScript, ma che non sembra essere comunemente utile comunque.

Per il bene leggere i programmatori JavaScript là fuori, si può riconoscere questa ultima versione di oggetti durevoli dal libro di Douglas CrockfordJavaScript: le parti buone .

Trovo interessante che il "eredità" la parola non appare nell'indice SICP è anche se il libro va avanti per attuare programmi complessi come interpreti e compilatori in uno stile di scambio di messaggi. Ciò dimostra questo stile semplice di programmazione orientata agli oggetti si può prendere lontano.

Corso Java - Corsi Java - Corsi programmazione Java

Corso programmazione Android - Certificazione Android

lunedì 27 giugno 2011

Standard Java processo per ottenere un aggiornamento

di Paul Krill

Il tanto criticato JCP (Java Community Process), che delinea le procedure per la modifica ufficialmente sancita tecnologie Java, è impostato per un lifting, che comprende una maggiore trasparenza e la possibile perdita di privilegi di voto per i membri JCP che ignorano le loro responsabilità.

Nuove procedure fanno parte della recente introduzione Java Specification Request 348 . "Questo JCR - soprannominato JCP.next - propone una serie di cambiamenti a che fare con la trasparenza, la partecipazione, l'agilità e la governance", JCP ha detto in un documento pubblicato sul suo sito l'8 giugno. Il documento afferma che JCP presidente Patrick Curran vista di una piena trasparenza delle operazioni del gruppo di esperti JCP come la modifica più importante introdotta dalla JSR 348. "Molti gruppi di esperti svolgere le loro attività apertamente su mailing list pubbliche e visibili pubblicamente problema-trackers, e fanno le risposte pubbliche a tutti i commenti. JCP.next eleverà quelle pratiche consiglia di valore vincolante. Il processo di reclutamento di esperti membri del gruppo sarà anche essere documentato per gli occhi del pubblico, assicurando che tutte le applicazioni vengono considerati in modo equo ", ha detto JCP.

Per promuovere l'obiettivo di regolare funzionamento per la comunità JCP, membri del Comitato Esecutivo sarà chiamato a votare su JSR e partecipare alle riunioni: "JCP.next specifica che coloro che non riescono a svolgere queste mansioni saranno oggetto di 'sanzioni', come la perdita del diritto di voto ". JCP.next formalizza il processo di sostituzione porta specifica o membri del gruppo di esperti che non sono disposti a svolgere mansioni in modo responsabile.

All'ordine del giorno sono piani per unire le Standard Edition / Enterprise Edition e comitati esecutivi Micro Edition. "Il giorno è venuto per il percorso diviso per unirsi in una sola autostrada", ha detto JCP. JCP.next inoltre richiede che le modifiche ai termini di licenza originale di Java essere monitorati nel tempo.

"Abbiamo discusso la necessità di una riforma organizzativa e di processo per diversi anni", Curran ha detto sul sito JCP. «Abbiamo preso alcuni piccoli passi ma importanti nel 2009 con una versione di manutenzione di JSR 215 , ma dopo l'approvazione lo scorso anno della JSR per Java SE 7 e SE 8, era chiaro che fosse giunto il momento per ulteriori modifiche sostanziali ".

Il JCP per anni è stato il bersaglio di critiche su una supposta mancanza di trasparenza e controllo eccessivo da parte del venditore responsabile della gestione Java. In primo luogo, che era venditore Sun Microsystems. Ora, che il fornitore è Oracle, che ha acquisito Sun fine del 2010.

Inoltre, c'è stata una disputa in corso con la Apache Software Foundation sui termini di licenza per la versione di Apache Harmony di Java, con Apache opposti campo di utilizzo restrizioni relative ai dispositivi mobili. Funzionari Apache su Lunedi non ha risposto immediatamente alle richieste di commentare JCP.next. Revisione delle bozze presto per JSR 348, che è ufficialmente intitolato "Verso una nuova versione del Java Community Process," è prevista per l'inizio di questa estate.

Eclipse: l'annuale software release è in arrivo

di Paul Krill

Rilascio di quest'anno si chiama Indigo, e dispone di sforzi da 62 team di progetto e 46 milioni di righe di codice. Ogni anno, Eclipse ha messo fuori un rilascio simultaneo di varie tecnologie, fornendo agli sviluppatori con le ultime dai progetti Eclipse diversi. L'elenco completo dei progetti sono disponibili sul sito Indigo , e singole tecnologie possono essere scaricati sul sito di Eclipse .

Tra i vantaggi per gli sviluppatori Java a Indigo è uscita di EGit 1.0, offrendo supporto per il sistema distribuito di Git gestione del codice sorgente. "Da l'IDE Eclipse, [sviluppatori] può usare Git e GitHub strettamente integrato nell'IDE," ha detto Ian Skerrett, vice presidente marketing di Eclipse. Negli ultimi anni, Eclipse è stata l'aggiunta di funzionalità per linguaggi come PHP e C + +, ma Indigo è stato definito "una delle cose migliori che abbiamo fatto per Java in questi anni," da Eclipse direttore esecutivo Mike Milinkovich.

Il progetto WindowBuilder in Indigo è un costruttore di GUI che genera codice Java. Indigo offre anche agli sviluppatori Java più Maven strumento di supporto costruire attraverso il progetto m2eclipse. "Ora, c'è utensili che è possibile caricare nel vostro spazio di lavoro Eclipse che sa parlare con Maven," Skerrett detto. "Si rende solo più una soluzione molto più integrato".

Modellazione, aiutando gli sviluppatori a realizzare e gestire progetti software complessi, viene sottolineato in Indigo pure. La versione 2.0 del framework sviluppo del linguaggio xtext offre funzionalità per la DSL (linguaggi specifici del dominio), inclusa la possibilità di costruire DSL integrato con Java-like espressioni. Il Acceleo 3,1 progetto integra la generazione di codice in Ant e Maven catene di costruire e migliora generatore di editing strutture, Eclipse ha detto. CDO (Collegato Data Objects) Modello Repository 4.0 si integra con diverse banche dati NoSQL, come MongoDB, ottimizzazioni cache e altre migliorie per i modelli permettono di raggiungere diversi gigabyte di dimensione. Eclipse estesa Editing Framework 1.0 genera campi elettromagnetici avanzato (Eclipse Modeling Framework) editori in uno scatto. Facet EMF, un nuovo progetto, consente estensioni di un metamodello Ecore esistente senza alcuna modifica. Ecore è la tecnologia di base utilizzata dai campi elettromagnetici per descrivere i modelli.

Eclipse miglioramenti runtime includono 2,3 Eclipse il supporto per il collegamento multi-tenant JPA (Java Persistence Architecture) Le persone, per integrare la persistenza JPA in applicazioni di tipo SaaS. Equinox 3.7, nel frattempo, attua le specifiche OSGi 4,3, compreso l'uso di firme generiche e capacità.

Enterprise l'aggiornamento Java orientata alle nubi PaaS

Di Paul Krill

La prossima versione di Java enterprise sarà dotata di funzionalità per PaaS (platform-as-a-service) di cloud computing, Oracle ha detto un funzionario Giovedi pomeriggio di offrire specifiche su cosa aspettarsi in aggiornamento.

Java Platform, Enterprise Edition (Java EE) 7 è previsto per il terzo trimestre del prossimo anno. "Quello che il nostro obiettivo principale è, sta rendendo la piattaforma Java EE pronto per l'uso nel cloud in modo che è possibile distribuire le applicazioni Java EE in un ambiente cloud", ha detto Linda DeMichiel, Oracle piattaforma Java EE portare, in occasione della conferenza a San Jax Jose, in California ha anche offerto un assaggio di una successiva Java EE 8 di rilascio, che sarebbe completamente modulare ed essere sintonizzati per l'utilizzo in modalità SaaS (software-as-a-service) di cloud computing.

[All'inizio di questa settimana, Spring Framework fondatore Rod Johnson ha sottolineato la necessità di capacità di nuvole più in Java . Tenere il passo con le ultime notizie Java con InfoWorld newsletter JavaWorld Java Enterprise . | Segui Paul Krill su Twitter . ]

Con PaaS, Java EE fornirebbe l'ambiente di runtime per l'esecuzione di un'applicazione Java in the cloud. Supporto PaaS in Java EE 7 comporterebbe cambiamenti evolutivi, con il supporto per il multi-tenant, modelli di programmazione piccoli e ruoli nuova piattaforma. "Per consentire multi-tenant, ovviamente contenitori e gestori di risorse avranno bisogno di cooperare", in termini di passaggio lungo identificatori inquilino e fornire isolamento tra gli inquilini, DeMIchiel detto. Utile per un ambiente cloud API Andrebbe aggiunta Java EE 7, tra cui JCache, per temporanea in memoria cache di oggetti Java e JAX-RS, che è un API Java foår RESTful accesso ai servizi.

"Ci aspettiamo che le applicazioni dovranno dichiarare se stessi come cloud-enabled", ha detto DeMichiel. "Questo può imporre ulteriori restrizioni su quello che il codice applicativo potrebbe essere in grado di fare".

In aggiunta alle sue capacità PaaS, Java EE 7 è impostato per avere un supporto limitato per SaaS, in cui un'applicazione in grado di supportare più tenant ma ogni inquilino riceve un'istanza separata di un'applicazione. Oracle vede SaaS come la capacità di distribuire un'applicazione nuvola in cui l'applicazione può servire più clienti o inquilini. Ruoli previsti per l'inclusione in Java EE 7 includono un provider cloud, come Java EE prodotto o fornitore PaaS, insieme con i ruoli dei clienti cloud, come amministratore dell'applicazione o dell'utente finale.

Anche gli occhi per Java EE 7 è un aggiornamento del profilo Web introdotto in Java EE 6, che ha offerto una serie di funzioni di implementazione Java per lo sviluppo web. Un aggiornamento potrebbe includere JAX-RS supporto. Altre funzionalità mirate per il rilascio includono funzionalità di configurazione migliorata e l'allineamento di fagioli gestiti attraverso tecnologie come il CDI (Contesti e Dependency Injection), Enterprise JavaBeans, e JavaServer Faces. Fagioli gestito fa parte della tecnologia Java Management Extensions, che fornisce strumenti per la gestione delle applicazioni, oggetti di sistema, dispositivi e service-oriented network. Fagioli gestito rappresentano le risorse di calcolo diversi.

Con Java EE 8, Oracle sta pianificando modularità simile a quello che è abilitato a Java SE (Java Platform, Standard Edition) 8 specifiche, insieme con più funzionalità SaaS. Un profilo nuvola per Java possono essere introdotti e forse più cloud-API relative, ad esempio uno per i database NoSQL. Java EE 8 potrebbe anche avere le capacità destinate per Java EE 7 che non erano pronti in tempo.

venerdì 24 giugno 2011

Scalare il JavaScript, scala la tua squadra

da radar o'really

La creazione di applicazioni JavaScript che si scala senza problemi può essere difficile - in termini di design, in termini di tecnologia, sia in termini di gestione team di sviluppatori con un sacco di mani nel codice. Nella seguente intervista, " High Performance JavaScript "autore e speaker OSCON Nicola Zakas discute le problematiche che appaiono quando si genera grandi applicazioni JavaScript con grandi squadre.

Quali sono alcune delle sfide allegato alla costruzione di grandi applicazioni JavaScript con una grande squadra?

Nicholas Zakas: La più grande sfida è di rendere tutti che si trova sulla stessa pagina. In molti modi, si desidera che l'intero team a lavorare come un singolo tecnico, il che significa che ogni ingegnere ha bisogno di essere impegnati a fare le cose allo stesso modo. Convenzioni codice sono di vitale importanza, come lo sono le revisioni del codice, per assicurarsi che tutti capiscano non solo il loro ruolo, ma i ruoli di tutti gli altri della squadra. In qualsiasi punto nel tempo, vuoi qualsiasi ingegnere di essere in grado di intervenire e prendere un altro lavoro di ingegnere senza la necessità di capire stile personale la sua prima volta.

Come si progetta un'applicazione che bilancia la reattività e la struttura?

Nicholas Zakas : Come si dice, il primo passo per risolvere un problema è ammettere ne hai uno. La chiave è quella di riconoscere fin dall'inizio che non avete idea di come questo si svilupperà. Quando si accetta di non sapere tutto, si inizia a progettare il sistema difensivo. A identificare le aree chiave che possono cambiare, che spesso è molto facile quando si mette un po 'di tempo in esso. Per esempio, si dovrebbe aspettare che una qualsiasi parte delle app che comunica con un altro sistema probabilmente cambierà, quindi è necessario che via astratta. Si dovrebbe passare la maggior parte del vostro tempo a pensare interfacce piuttosto che implementazioni.

Quali sono le specifiche sfide a JavaScript?

Nicholas Zakas : Il "condiviso tutto" la natura del linguaggio è la più grande sfida JavaScript. È possibile impostare un sistema che è ben progettato, e un ingegnere inesperto potrebbe entrare e - casualmente o no -. Cambiare alcuni pezzi chiave della funzionalità ECMAScript 5 aiuta con alcuni che, consentendo di bloccare la modifica di oggetti, ma il natura del linguaggio rimane in gran parte lo stesso e problematico.

Fare lezioni applicabili a grandi gruppi si applicano anche alle squadre più piccole?

Nicholas Zakas: piccole squadre ancora bisogno di costruire soluzioni scalabili, perché si spera, un giorno, la squadra crescerà più grandi. Il vostro sistema dovrebbe funzionare per qualsiasi numero di ingegneri. La prova di un buon progetto è quello di poter passare senza interruzioni da cinque ingegneri a 10 e poi più senza dover cambiare radicalmente il progetto.

Corso Java - Corsi Java - Corsi programmazione Java

Corso programmazione Android - Certificazione Android

Osservazioni in Migrazione da JavaFX Script per JavaFX 2,0

da blogoracle

Introduzione

Essendo stato per alcuni anni, c'è un corpo di lavoro dignitose per JavaFX scritto utilizzando il linguaggio JavaFX Script. Con l'annuncio disponibilità di JavaFX 2.0 Beta, la domanda sorge naturale sulla conversione del codice legacy verso il nuovo JavaFX 2,0 piattaforma. Questo articolo riflette su alcune delle osservazioni incontrati durante il porting del codice sorgente da più di JavaFX Script per il nuovo paradigma JavaFX API.

L'applicazione

Il programma scelto per la migrazione è un'implementazione del gioco Sudoku e serve come applicazione di riferimento per il libro JavaFX - Sviluppare Rich Internet Applications . Il design del programma può essere suddiviso in due componenti principali: (1) L'interfaccia utente (l'ideale JavaFX per la progettazione) e (2) il generatore di puzzle. Per il contesto di questo articolo, il nostro interesse primario risiede nell'interfaccia utente. Il codice generatore di puzzle è stato sollevato da un progetto sourceforge.net ed è scritto interamente in Java.Indipendentemente da quale versione dell'interfaccia utente che scegliamo (JavaFX Script vs JavaFX 2.0), senza modifiche al codice sono state necessarie per il codice generatore di puzzle.

L'interfaccia utente originale per l'applicazione JavaFX Sudoku è stato scritto esclusivamente in JavaFX Script, e come tale è un candidato adatto per la conversione verso il nuovo 2.0 JavaFX modello. Tuttavia, alcuni punti degni di nota sono da segnalare su questo programma. Prima di tutto, è stato scritto nell'arco di tempo che 1,1 JavaFX, dove alcune funzionalità del framework JavaFX sono stati come ancora non disponibile. Citando due esempi, questo programma crea molti dei suoi controlli di interfaccia utente da zero perché il built-in controlli sono stati ancora essere introdotto. Inoltre, il layout grafico dei nodi viene fatta in modo molto manuale, ancora una volta perché gran parte delle funzionalità di layout automatiche erano in movimento al momento. Vale la pena di considerando che questo programma è stato scritto in un momento in cui la maggior parte di noi era appena venuta fino a velocità su questa tecnologia. Si potrebbe pensare che avere la possibilità di ricreare questa applicazione di nuovo, sarebbe stata molto diversa dalla versione attuale.

Confrontando la dimensione del codice sorgente

Si è tentato di convertire ogni file originali JavaFX Script fonte UI (suffisso. Fx) oltre ad una controparte Java. A causa delle differenze caratteristica del linguaggio, ci sono un piccolo numero di file sorgente che esistono solo in una versione o l'altra . La tabella seguente riassume le dimensioni di ogni file sorgente.

JavaFX Script file sorgente

Numero di linee

Numero di caratteri

JavaFX 2.0 Java file sorgente

Numero di linee

Numero di caratteri




ArrowKey.java

6

72

Board.fx

221

6831

Board.java

205

6508

BoardNode.fx

446

16054

BoardNode.java

723

29356

ChooseNumberNode.fx

168

5267

ChooseNumberNode.java

302

10235

CloseButtonNode.fx

115

3408

CloseButton.java

99

2883




ParentWithKeyTraversal.java

111

3276




FunctionPtr.java

6

80




Globals.java

20

554

Grouping.fx

8

140




HowToPlayNode.fx

121

3632

HowToPlayNode.java

136

4849

IconButtonNode.fx

196

5748

IconButtonNode.java

183

5865

Main.fx

98

3466

Main.java

64

2118

SliderNode.fx

288

10349

SliderNode.java

350

13048

Space.fx

78

1696

Space.java

106

2095

SpaceNode.fx

227

6703

SpaceNode.java

220

6861

TraversalHelper.fx

111

3095




Totale

2077

79.127


2531

87.800

Alcune note su questa tabella sono in ordine:

  • Il numero di linee in ogni file è stato determinato eseguendo il comando Unix 'wc-l' oltre ogni file.
  • Il numero di caratteri in ogni file è stato determinato eseguendo il comando Unix 'ls-l' oltre ogni file.
  • L'esame del codice potrebbe certamente essere molto più rigorosi. Senza formattazione standard è stata effettuata su questi file. Tutti i commenti però sono stati cancellati.

C'era una certa aspettativa che la nuova versione di Java richiede più righe di codice rispetto alla versione originale dello script JavaFX. Come evidenziato da un conteggio del numero totale di linee, la versione Java ha linee di circa il 22% in più rispetto al suo omologo Script FX.

Inoltre, c'è stato un ulteriore aspettativa che la versione Java sarebbe più prolisso in termini di numero totale di caratteri. Di fatto i dati precedenti mostrano che in media i file sorgente Java contiene meno caratteri per riga rispetto ai file FX. Ma non è tutta la storia. Su un ulteriore esame, i file di script fonte FX ha un numero sproporzionato di caratteri vuoti. Perché? A causa della natura di come si sviluppa il codice JavaFX Script. L'oggetto letterale domina FX codice script. La sua non è raro vedere letterali oggetto rientrato a metà della pagina, consumando un sacco di spazi senza senso.

Consumo di RAM

Non è l'analisi più scientifica, l'utilizzo di memoria per l'applicazione è stata esaminata su un sistema Windows Vista eseguendo il Task Manager di Windows e la visualizzazione di quanta memoria è stata consumata dalla versione Sudoku in questione. In parole povere, la versione dello script FX, dopo l'avvio, ha un ingombro di circa 90MB di RAM ed è rimasta praticamente la stessa dimensione. La versione Java iniziato a circa 55MB e ha sostenuto che taglia tutta la sua esecuzione.

What About vincolante?

Probabilmente, l'osservazione più sorprendente la conversione da JavaFX Script per JavaFX 2,0 riguardava la necessità di sincronizzazione dei dati, o la loro mancanza. In JavaFX Script, il mezzo principale per la sincronizzazione dei dati avviene attraverso l'espressione bind (utilizzando la parola chiave "legare"), e forse in misura minore che si dirà "sostituire" cugino. La parola chiave legano non esiste in Java, quindi per JavaFX 2.0 un API Associazione di dati è stato introdotto in sostituzione.

Per dare un'idea della differenza tra le due versioni del programma Sudoku, la tabella che segue indica il numero di lega erano necessari per ogni file sorgente. Per JavaFX Script file, questo è stato accertato, semplicemente contando il numero di occorrenze della legano parola chiave . Come si può vedere, il legame era stato usato di frequente nella versione JavaFX Script (e non prende in considerazione un ulteriore mezzo dozzina o giù di lì " a sostituire " trigger). Il programma di JavaFX 2,0 raggiunge le stesse funzionalità della versione originale JavaFX Script, ma l'equivalente di legame era necessario solo due volte in tutta la versione Java del codice sorgente.

JavaFX Script file sorgente

Numero di Lega

JavaFX successiva file sorgente Java

Numero di "Lega"



ArrowKey.java

0

Board.fx

1

Board.java

0

BoardNode.fx

7

BoardNode.java

0

ChooseNumberNode.fx

11

ChooseNumberNode.java

0

CloseButtonNode.fx

6

CloseButton.java

0



CustomNodeWithKeyTraversal.java

0



FunctionPtr.java

0



Globals.java

0

Grouping.fx

0



HowToPlayNode.fx

7

HowToPlayNode.java

0

IconButtonNode.fx

9

IconButtonNode.java

0

Main.fx

1

Main.java

0

Main_Mobile.fx

1



SliderNode.fx

6

SliderNode.java

1

Space.fx

0

Space.java

0

SpaceNode.fx

9

SpaceNode.java

1

TraversalHelper.fx

0



Totale

58


2

Conclusioni

Poiché la tecnologia JavaFX 2.0 è così nuovo, e l'esperienza con la piattaforma è la stessa, è possibile e anzi probabile che alcune delle osservazioni notato nel precedente articolo può non applicarsi in altri tentativi di migrazione delle applicazioni. Detto questo, questa prima esperienza indica che il codice migrazione Java sarà probabilmente maggiore, anche se non così ampiamente, rispetto alla fonte originale Script Java FX. Inoltre, anche se molto importante, sembra che i requisiti per la sincronizzazione dei dati via vincolante, può essere significativamente meno con la nuova piattaforma .


Corso Java - Corsi Java - Corsi programmazione Java

Corso programmazione Android - Certificazione Android