Interfaccia grafica

sì, netbeans possiede una GUI builder di default, non ce l'ha di default eclipse (altro IDE famoso per java) ma la puoi installare dai plugin ufficiali (gui builder, ma ne esistono altre)

l'HTTP è un protocollo al di sopra del TCP, ovvero usa il TCP per comunicare ma ha una sua serie di regole.

La metto giù facile, sappi che non è proprio così, la prendo un pò larga per farti capire bene:
differenze tra TCP e UDP:
l'UDP è connectionless, ovvero ogni messaggio (detto datagramma) è come se aprisse una connessione e la richiudesse subito.
Ciò fa in modo che ogni messaggio è completamente indipendente dall'altro; è quindi impossibile sapere a livello UDP se i messaggi inviati sono arrivati a destinazione, se i messaggi arrivati sono corrotti, e può capitare che un messaggio inviato dopo arrivi prima di uno inviato prima; dipende dal percorso che effuttuano sulla rete. Solo il client può spedire messaggi e il server riceverli, quindi se vuoi sia trasmettere che ricevere devi essere sia client che server. (in pratica devi aprire le porte sul router per ricevere)

il TCP apre una connessione e la mantiene attiva salvo time-out o chiusura connessione. Cioò vuol dire che esiste un filo logico tra un messaggio (detto pacchetto) e l'altro, e il TCP attende l'arrivo di vari mesaggi, li riordina, ne controlla la validà, se la validità è ok rende i mesaggi disponibili all'user, altrimenti invia un segnale di errore che in automatico richiede il reinvio dei pacchetti corroti.
Notare che grazie al fatto che la connessione è stabile, i router in automatico aprono una porta in ricezione lato client, e quindi non è necessario fare da server per poter trasmettere e ricevere, ma la cosa è automatica (quindi nessun setup del router lato utente).

ora entra in gioco l'HTTP:
l'http usa il TCP, però lo usa in modo connection-less. ovvero: il client fa una rtichiesta, il server risponde e la connessione viene chiusa.
In oltre bisogna inviare dei dati di protocollo ben precisi, detti header.