OOP Project 2014-2015: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Linia 3: Linia 3:
In today's technology, a great deal of effort is put in the development of distributed systems, where a client runs a program or a section of a program on an external server and receives a reply. The advantage is that the server can execute the program faster since it has a larger power and energy budget than a mobile terminal (phone or tablet). The purpose of this project is the development of an application that can transfer, compile and execute a Java class on a remote server.
In today's technology, a great deal of effort is put in the development of distributed systems, where a client runs a program or a section of a program on an external server and receives a reply. The advantage is that the server can execute the program faster since it has a larger power and energy budget than a mobile terminal (phone or tablet). The purpose of this project is the development of an application that can transfer, compile and execute a Java class on a remote server.


== Cerințe ==
== Requirements ==


Realizați o aplicație client-server cu următoarele specificații:
Develop a client-server application with the following specifications:
* client-ul trebuie să conțină o interfață grafică care să permită scrierea unei clase Java (ex: JTextArea);
* the client MUST contain a graphical user interface (GUI), enabling the user to write a Java program / class (ex: JTextArea).
* client-ul trebuie apoi să transfere fișierul sursă pe server, printr-un socket TCP;
* the client MUST transfer the source file to the server, through a TCP socket;  
* server-ul trebuie să compileze iar apoi să execute clasa Java primită, întorcând clientului rezultatele (mesaj de eroare dacă clasa nu a putut fi compilată, excepții care au fost aruncate la execuție, sau caracterele afișate pe '''standard output stream''' și '''standard error stream''').
* the server MUST compile then execute the Java class, returning the results (error message if the compilation of the class failed, exceptions thrown and/ or the strings displayed on the '''standard output stream''' and the '''standard error stream''');
* server-ul trebuie realizat multi-threaded pentru a putea servi mai mulți clienți simultan.
* the server MUST be multi-threaded so it can serve multiple clients at the same time.


=== Observații ===
=== Miscellaneous ===


* se permite utilizarea de biblioteci externe, atât timp cât acestea au fost studiate și modul lor de funcționare înteles.
* using an external library is allowed, as long as its behavior is understood and the API thoroughly analyzed;
* pentru compilarea unei clase Java, se pot folosi clasele [http://docs.oracle.com/javase/8/docs/api/javax/tools/ToolProvider.html javax.tools.ToolProvider] și [http://docs.oracle.com/javase/8/docs/api/javax/tools/JavaCompiler.html javax.tools.JavaCompiler] iar pentru execuție se poate folosi [http://examples.javacodegeeks.com/core-java/dynamic-class-loading-example/ Dynamic Class Loading] și [https://docs.oracle.com/javase/tutorial/reflect/ Java Reflection].
* for compiling a Java class, you MAY use classes [http://docs.oracle.com/javase/8/docs/api/javax/tools/ToolProvider.html javax.tools.ToolProvider] and [http://docs.oracle.com/javase/8/docs/api/javax/tools/JavaCompiler.html javax.tools.JavaCompiler] as for execution, you MAY use [http://examples.javacodegeeks.com/core-java/dynamic-class-loading-example/ Dynamic Class Loading] and [https://docs.oracle.com/javase/tutorial/reflect/ Java Reflection].


Se acordă bonus pentru următoarele realizări:
You may receive a bonus for the following:
* fereastra de editare de pe client să aibă '''code highlight''', adică cuvintele cheie Java să fie afișate cu bold sau cu altă culoare.
* the edit window has a '''code highlight''' feature, meaning that the Java keywords and displayed in bold or with a different color;
* posibilitatea de a transmite de pe client stream-ul standard de intrare către procesul pornit pe server, în timp ce acesta rulează.
* the possibility to redirect the input stream from the client to the application running on the server;


== Modalitate de evaluare ==
== Modalitate de evaluare ==

Versiunea de la data 21 iulie 2015 15:45

Description

In today's technology, a great deal of effort is put in the development of distributed systems, where a client runs a program or a section of a program on an external server and receives a reply. The advantage is that the server can execute the program faster since it has a larger power and energy budget than a mobile terminal (phone or tablet). The purpose of this project is the development of an application that can transfer, compile and execute a Java class on a remote server.

Requirements

Develop a client-server application with the following specifications:

  • the client MUST contain a graphical user interface (GUI), enabling the user to write a Java program / class (ex: JTextArea).
  • the client MUST transfer the source file to the server, through a TCP socket;
  • the server MUST compile then execute the Java class, returning the results (error message if the compilation of the class failed, exceptions thrown and/ or the strings displayed on the standard output stream and the standard error stream);
  • the server MUST be multi-threaded so it can serve multiple clients at the same time.

Miscellaneous

You may receive a bonus for the following:

  • the edit window has a code highlight feature, meaning that the Java keywords and displayed in bold or with a different color;
  • the possibility to redirect the input stream from the client to the application running on the server;

Modalitate de evaluare

  • Acest proiect valorează 40 de puncte din nota totală la POO. Se cer minim 20 de puncte din 40 pentru promovarea laboratorului și implicit pentru intrarea în examen.
  • Proiectul va fi prezentat public de către autor și va fi evaluat, acordându-se o notă între 0 și 40.
  • Autorului i se vor pune 5 întrebări exclusiv din codul scris în cadrul proiectului. Orice întrebare la care se răspunde greșit, sau nu se răspunde, va fi penalizată cu 5 puncte. Rezultatul este că examenul se poate pica și cu un proiect de 40 de puncte.