Project exercise client-server

di il
11 risposte

Project exercise client-server

Il mio obiettivo è una chat application. Esercizio d'apprendimento nel modello client-server e migliorare le mie conoscenze in Java.

Apro questo thread per parere personale e in futuro magari discutere di problematiche in cui andrò incontro nel progetto. Progetto semplicissimo vero, ma il mio quesito per ora è:

Inizio con Spring Boot? Però non conosco nulla di Tomcat e come si inizializza un server in Java. Qualche buona guida su cui posso studiare? Per ora l'unico libro che possiedo in Java, oltre le slide universitarie, è una Guida OCA OCP in Java 7.


P.s. database utilizzo mysql che ho già definito e l'applicazione client sarà solo per SO Android, niente applicazione web. Trovo più semplice Android per ora, test per i verbi HTTP uso Insomnia di solito.

11 Risposte

  • Re: Project exercise client-server

    TheRT0C ha scritto:


    Il mio obiettivo è una chat application. Esercizio d'apprendimento nel modello client-server e migliorare le mie conoscenze in Java.

    Inizio con Spring Boot? Però non conosco nulla di Tomcat e come si inizializza un server in Java. Qualche buona guida su cui posso studiare? Per ora l'unico libro che possiedo in Java, oltre le slide universitarie, è una Guida OCA OCP in Java 7.
    Una chat ... ok. Ma una "chat" la si può fare in molti modi. Quindi innanzitutto bisogna stabilire quale "protocollo" di comunicazione utilizzare. Due applicazioni standalone che usano direttamente i socket? Web application in cui la chat è su una pagina web? Altro?
    Quindi, cosa sono client e server? E poi si tratta di una chat in cui un utente chatta con solo un altro utente (con più coppie possibili, naturalmente) o si tratta di un "gruppo" di più persone? Insomma, sarebbe tutto da valutare e studiare ...
  • Re: Project exercise client-server

    Utente A chatta con una lista di utenti(obiettivo plus: chat di gruppo).

    Client e Server comunicano per mezzo di una REST? meh essendo non bidirezionale, mi troverei nella condizione che non riceverò una notifica di un nuovo messaggio se la mia interfaccia non fa ad ogni tot ms una GET.
    Quindi devo creare un canale Socket tra due applicazioni.
  • Re: Project exercise client-server

    TheRT0C ha scritto:


    Client e Server comunicano per mezzo di una REST? meh essendo non bidirezionale, mi troverei nella condizione che non riceverò una notifica di un nuovo messaggio se la mia interfaccia non fa ad ogni tot ms una GET.
    Con REST serve il "polling" ogni tot infatti.

    TheRT0C ha scritto:


    Quindi devo creare un canale Socket tra due applicazioni.
    O i socket TCP ... oppure se si tratta di una webapp, dei WebSocket.
    Oppure RMI. O altro protocollo possibilmente bidirezionale.
  • Re: Project exercise client-server

    Ok definisco una WebSocket, dipendenze inclusa nello starter di spring boot. La mia domanda iniziale è, quanto per una persona inesperta, conviene iniziare da Spring Boot? e perchè non iniziare dallo strato inferiore come Spring Framework, capire le dipendenze o le annotation.
  • Re: Project exercise client-server

    TheRT0C ha scritto:


    Ok definisco una WebSocket, dipendenze inclusa nello starter di spring boot. La mia domanda iniziale è, quanto per una persona inesperta, conviene iniziare da Spring Boot? e perchè non iniziare dallo strato inferiore come Spring Framework, capire le dipendenze o le annotation.
    Usare Spring Boot senza conoscere un pochino Spring Framework è un po' un azzardo .... e comunque WebSocket con Spring è solo metà del problema. L'altra metà è la parte client.
  • Re: Project exercise client-server

    Partiamo prima dal lato server, evitiamo di inizializzare tutto tramite Spring Boot, da dove inizio? guide libri, i doc dei creatori di Spring Framework bastano? Come definisco un WebServer?
  • Re: Project exercise client-server

    TheRT0C ha scritto:


    Partiamo prima dal lato server, evitiamo di inizializzare tutto tramite Spring Boot, da dove inizio? guide libri, i doc dei creatori di Spring Framework bastano?
    La reference ufficiale di Spring sarebbe un buon inizio. Ma meglio ancora un buon libro.
    Poi vuoi usare Spring 4 o 5? La XML configuration o la Java configuration di Spring?

    TheRT0C ha scritto:


    Come definisco un WebServer?
    Se intendi come configurare un server es. Tomcat in un IDE, dipende dall'IDE. In Eclipse (serve la versione "for Enterprise Java Developers") è abbastanza facile.
  • Re: Project exercise client-server

    Ma la differenza tra le due configurazioni qual'è? solo la definizione dei componenti? beh preferisco le annotazioni di Java, e quindi Spring 5.
    Spring in Action di Craig Walls, c'è la versione pdf in rete gratis, è un buon ripiego?


    Utilizzo Intellij Community, avevo inizializzato il progetto dallo starter di Spring Boot, aggiungendo le librerie, però stavo iniziando a capirci poco delle Annotazioni, quindi forse dovrei fare un passo indietro.
  • Re: Project exercise client-server

    TheRT0C ha scritto:


    Ma la differenza tra le due configurazioni qual'è? solo la definizione dei componenti?
    Grosso modo sì, con la XML configuration hai un/più file xml che descrivono le definizioni dei bean. Con la Java configuration hai delle classi annotate.

    TheRT0C ha scritto:


    beh preferisco le annotazioni di Java, e quindi Spring 5.
    Spring in Action di Craig Walls, c'è la versione pdf in rete gratis, è un buon ripiego?
    Sì, "Spring in Action" è in generale un buon libro.

    Se si ha a disposizione un Servlet container (es. Tomcat) che supporta almeno le Servlet 3.0 (ormai una cosa facile/comune), il "boot" di Spring è molto più semplice perché non c'è neanche bisogno del web.xml. Basta invece creare una classe di inizializzazione che estende AbstractAnnotationConfigDispatcherServletInitializer e ridefinire i metodi che forniscono i Class relativi alla "root" configuration e alla "web" (Servlet) configuration. La documentazione di Spring lo spiega bene con esempi.
  • Re: Project exercise client-server

    Sto iniziando a leggere Spring in Action.

    Con SpringBoot ero partito con il definire un @SpringBootApplication, i Controller e i Service, insieme alla definizione dei DAO. Naturalmente tralasciando l'uso dei design pattern, di cui in buona parte mi è chiaro, ho delle forti lacune sul processo e le connessioni dei vari elementi, trovo difficoltà a non guardare degli esempi già implementati. Ti farò sapere come procede nei prossimi giorni.
  • Re: Project exercise client-server

    TheRT0C ha scritto:


    trovo difficoltà a non guardare degli esempi già implementati.
    Se ti serve un esempio basilare con Spring 5, un controller minimale che mostra una pagina web, si fa con una "manciata" di file, non ci metto molto a farlo (anzi, volevo sempre farlo e metterlo su github ma ho sempre poco tempo ..). L'unica cosa che devo andarmi a rivedere è il logging in Spring 5, perché è leggermente cambiato rispetto a Spring 4.
Devi accedere o registrarti per scrivere nel forum
11 risposte