2010-10-17 11 views

risposta

32

Ci sono diversi motivi.

Un app server Java EE è un monitor di transazione per i componenti distribuiti. Fornisce una serie di astrazioni (ad es. Denominazione, raggruppamento, ciclo di vita dei componenti, persistenza, messaggistica, ecc.) Per aiutare a raggiungere questo obiettivo.

Molti di questi servizi fanno parte del sistema operativo Windows. Java EE ha bisogno dell'astrazione perché è indipendente dal sistema operativo.

Va anche detto che la specifica completa Java EE non è necessaria per lo sviluppo di applicazioni web. JDBC, la parte di Java che si occupa di database relazionali, fa parte di Java SE corretta. Java EE si aggiunge ai servlet, che sono listener HTTP e Java Server Pages, che è un linguaggio di markup per la generazione di servlet. È possibile sviluppare applicazioni Web completamente funzionali utilizzando solo queste tecnologie e Java SE. Tomcat e Jetty sono due motori servlet/JSP che possono supportare server di applicazioni Java EE completi.

Se si prende atto del fatto che .NET ha listener HTTP incorporati nel modulo System.Net, ci si rende conto che è come se .NET abbia preso una pagina da Java e abbia piegato la funzionalità javax.servlet nel framework.

Se si aggiungono Spring e una funzionalità di messaggistica come ActiveMQ o RabbitMQ, è possibile scrivere applicazioni complete senza dover ricorrere a WebLogic, WebSphere, JBoss o Glassfish. Non hai bisogno di EJB o della specifica Java EE completa.

UPDATE:

Primavera Boot offre la possibilità di sviluppare ed eseguire applicazioni ricche di funzionalità Java come un file JAR eseguibile. Non è necessario alcun application server Java EE, solo JDK 8 o versioni successive.

+0

Quindi, se .NET deve essere reso indipendente dal sistema operativo, dobbiamo percorrere il percorso di un application server come l'astrazione? –

+1

@CodeToGlory, se si desidera che il codice scritto in .NET venga eseguito come-è su una varietà di sistemi operativi, o se .NET è implementato da più fornitori, sarà necessario disporre di astrazioni equivalenti ogni volta che vengono richiamate funzionalità specifiche del sistema operativo o della piattaforma uno standard definito per tutti i servizi che tutti i fornitori multipli sarebbero conformi. – Yishai

7

Prima di tutto, è possibile eseguire il codice .NET off Apache utilizzando mod_mono, quindi è non limitato a IIS. Ci sono anche molti altri server web (Cassini e XPS vengono in mente) che eseguiranno anche ASP.NET.

Al fine di eseguire un'applicazione Web dinamica è necessario sia un server Web e un server applicazioni. A volte questi si integrano così bene che sembrano essere la stessa cosa, a volte no.

Per quanto riguarda Java - ha sempre sostenuto più piattaforme di .NET ed è stato più aperto, quindi, ma ho integrato a più server Web (sullo stack Linux).

Poiché sia ​​.NET che IIS sono tecnologie fornite da Microsoft, ASP.NET e gli aspetti del server delle applicazioni (aspnet_isapi.dll) sono stati forniti in bundle con IIS e i diversi installer .NET si integrano con IIS. Ovviamente, Microsoft l'ha implementato solo sul proprio sistema operativo e sul proprio server web.

5

Perché Java EE è una specifica, non un prodotto stesso. Ricorda che Java è molto più aperto di .NET (nel senso delle specifiche).

Ogni server applicazione ha caratteristiche diverse, prestazioni diverse, differenti target di utenti/imprese, diversi cartellini dei prezzi, viene eseguito in diverse piattaforme, richiedono hardware differente. La differenziazione è il motivo per cui esistono tutti i server delle applicazioni, una dimensione non si adatta a tutti.

6

Apache è molto simile a IIS e non ha molto a che fare con Java.

I server delle applicazioni in Java forniscono servizi aggiuntivi forniti da .NET in vari modi, con prodotti diversi o dal sistema operativo Windows.

Apache viene in genere utilizzato nelle distribuzioni Java come proxy per un server delle applicazioni dietro di esso e potenzialmente serve contenuto statico o gestisce SSL e preoccupazioni simili. È del tutto facoltativo, sebbene ci siano buoni motivi per usarlo.

Tomcat e Jetty sono fondamentalmente server Web java, che forniscono un framework definito (servlet tra le altre cose) per la creazione di siti Web dinamici con codice Java. Sono spesso componenti di un server di applicazioni più grande o possono essere distribuiti da soli.

JBoss è un esempio di server applicazioni (Glassfish e Weblogic sono due altri molto comuni), che fornisce la specifica J2EE completa. L'idea alla base della specifica J2EE è quella di consentire un modo definito di creare un server di applicazioni in modo che sia possibile passare un'applicazione tra diversi server di applicazioni di diversi fornitori che soddisfano le specifiche. La specifica riguarda come interagire con servizi definiti che sono utili per il programma lato server.

0

Gli strumenti di scelta off sono uno dei vantaggi e degli svantaggi di Java, se si considerano i Java Web Developement Framework disponibili, è possibile valutarli all'infinito solo per decidere. in .Net è praticamente MVC. Con i server è relativamente semplice. La maggior parte va a Tomcat se hanno bisogno di un server Web e JBoss se hanno bisogno di un server di applicazioni gratuito. Le ragioni di ciò sono già state dette, J2EE è una specifica.

+0

AHem Ahem ... Webforms. – tster

1

Una ragione è che scrivere un servlet è facile come implementare l'interfaccia javax.servlet.Servlet in una classe concreta. I contenitori servlet, quindi, devono solo supportare un'API abbastanza semplice per chiamarsi server web. Questo rende la creazione di un contenitore servlet estremamente semplice a causa di questo limitato contratto di funzionalità.

27

Questo perché Sun e Microsoft avevano obiettivi molto diversi con il loro software e modi per raggiungere tale obiettivo.

Il mantra di Sun per Java è stato fin dall'inizio "Scrivi una volta, corri ovunque" e questo ha comportato un grande sforzo per creare _API_s che specificano come dovrebbe apparire l'ambiente per consentire un elemento minimalista del codice fa il suo lavoro.

L'API per "elaborare una richiesta Web e restituire una risposta Web" è stata denominata Servlet ed è stata estremamente efficace a causa del riempimento di un vuoto e dell'essere ben specificato. Tutti i server Web basati su Java tradizionali che conosco consentono di eseguire servlet. Un'implementazione anticipata di un server Web completo con funzionalità servlet is only 1500 lines Successivamente è stato esteso per includere JSP per fornire HTML con codice lato server (come PHP).

Per qualsiasi soluzione veramente scalabile, comprese le soluzioni Web, significa che alla fine il carico è così elevato che un computer non è abbastanza potente da poterlo eseguire autonomamente. Una scalabile soluzione di MUST essere in grado di diffondersi su più computer a conoscenza gli uni degli altri, e che singola esigenza porta un sacco di altre cose al tavolo:

  • Codice deve essere in grado di richiamare il codice in esecuzione su un computer diverso (di EJB).
  • I dati devono essere disponibili su tutti i computer in modo coerente (database).
  • L'accesso a detto database deve essere efficiente (pool di connessioni database). ... e molto altro ancora

Sun ha poi creato API per tutte le funzioni che hanno trovato sono stati necessari per questo a correre, e la chiamò "Java Enterprise Edition" (quei giorni è stato utilizzato il termine "Enterprise" per un sacco di cose), e ha creato un sistema che implementa tutte queste API che le persone potrebbero acquistare e utilizzare.

La differenza tra Microsoft e Sun ora entra in gioco. Qui Microsoft renderebbe IIS solo pubblico e dirà "usa queste API" nei client ma in realtà non vorrebbe che nessuno crei un altro server che fornisce queste API. Perché vogliono vendere Windows per eseguirlo!

Sun ha voluto la gente a usare il linguaggio, invece, in modo che ha reso possibile per chiunque di implementare le specifiche Java EE, ma hanno dovuto superare un test suite rigorious da Sun (e pagare) per essere autorizzati a uso la Marchio Java EE. Ciò ha causato la disponibilità di un gran numero di server Java EE in cui è possibile riutilizzare la logica di core business, ma è necessario configurare il server Java EE per fornire le risorse necessarie per l'applicazione.

Vedere http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Certified_application_servers per lo stato dei server oggi. Sia commerciale che open source sono disponibili in base alle tue esigenze: scegli quello più adatto a te.

Quindi, la ragione è che Java EE è un insieme di API ben definite che chiunque può implementare e che hanno.

+0

Grazie a @Thorbjorn, l'unica lamentela che ho è che mi ci è voluto un sacco di tempo per creare un semplice esempio di ciao mondo in Java usando eclipse, jboss, jsf rispetto ad asp.net che sembrava molto semplice. Ho anche dovuto fare molte configurazioni e persino scaricare formiche prima di poter scrivere una riga di codice. –

+2

Il modo più semplice per iniziare con JEE è Netbeans con GlassFish. http://netbeans.org/downloads/ –

Problemi correlati