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

De la WikiLabs
Jump to navigationJump to search
 
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator)
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 ==
== Evaluation ==


* 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.
* This project is worth 40 points from the total of 100 points for the OOP course. You are required to obtain 20 of those in order to pass the laboratory and be allowed to take the exam.
* Proiectul va fi prezentat public de către autor și va fi evaluat, acordându-se o notă între 0 și 40.
* The project will be publicly presented by the author and evaluated, and it will be awarded a grade between 0 and 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.
* The author will be asked 5 questions, exclusively from the code written for the project. Any question answered incorrectly or not answered will deduct 5 points from the author's grade. The result is that the exam can be failed even with a perfectly implemented project.

Versiunea curentă din 21 iulie 2015 15:50

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;

Evaluation

  • This project is worth 40 points from the total of 100 points for the OOP course. You are required to obtain 20 of those in order to pass the laboratory and be allowed to take the exam.
  • The project will be publicly presented by the author and evaluated, and it will be awarded a grade between 0 and 40.
  • The author will be asked 5 questions, exclusively from the code written for the project. Any question answered incorrectly or not answered will deduct 5 points from the author's grade. The result is that the exam can be failed even with a perfectly implemented project.