ADVANCED JAVA PROGRAMMING

Luca GRECO ADVANCED JAVA PROGRAMMING

0612700128
DEPARTMENT OF INFORMATION AND ELECTRICAL ENGINEERING AND APPLIED MATHEMATICS
EQF6
COMPUTER ENGINEERING
2023/2024



YEAR OF COURSE 3
YEAR OF DIDACTIC SYSTEM 2017
SPRING SEMESTER
CFUHOURSACTIVITY
324LESSONS
18EXERCISES
216LAB
Objectives
THE COURSE AIMS TO EXPLORE ADVANCED AND INNOVATIVE ASPECTS OF THE JAVA LANGUAGE. IT IS THEREFORE AIMED AT DEVELOPING IN STUDENTS THE PROGRAMMING SKILLS NECESSARY FOR THE CREATION OF JAVA APPLICATIONS WITH ADVANCED CONSTRUCTIONS WHICH INVOLVE THE USE OF ANNOTATIONS, INTROSPECTION OF THE CODE, FUNCTIONAL APPROACHES.

KNOWLEDGE AND UNDERSTANDING
COMPLEMENTS TO THE BASIC CONSTRUCTS OF THE JAVA LANGUAGE. LIMITED INHERITANCE. SEALED AND RECORD TYPES. GENERICS. REFLECTION AND ANNOTATION TYPES. LAMBDA EXPRESSIONS AND METHOD REFERENCES. API STREAMS. COMPETITION API. MODULAR ORGANIZATION.

APPLIED KNOWLEDGE AND UNDERSTANDING
IMPLEMENT IN JAVA AN APPLICATION WHICH INVOLVES THE USE OF ANNOTATIONS, SEALED AND RECORD TYPES. DEVELOP SIMPLE ANNOTATION PROCESSORS. KNOWING HOW TO USE LAMBDA EXPRESSIONS AND REFERENCE TO METHODS. KNOWING HOW TO OPERATE ON COLLECTIONS SIMPLY AND EFFICIENTLY THANKS TO THE STREAM API. KNOWING HOW TO IMPLEMENT MULTITHREADED JAVA APPLICATIONS THAT USE CONCURRENCY API.


Prerequisites
PREREQUISITES
PREREQUISITES: GOOD PROGRAMMING PRACTICE IN JAVA IS REQUIRED TO SUCCESSFULLY ACHIEVE THE SET OBJECTIVES.
PREPARATORY COURSES: OBJECT ORIENTED PROGRAMMING

Contents
DIDACTIC UNIT 1: COMPLEMENTS TO THE BASICS OF LANGUAGE
(LESSON/EXERCISE/WORKSHOP HOURS 4/2/2)

1. ( 2 HOURS LECTURE ): REVIEW OF THE BASICS OF OBJECT ORIENTED PROGRAMMING IN JAVA LANGUAGE. IN-DEPTH STUDY OF LANGUAGE-SPECIFIC PROGRAMMING CONSTRUCTS. TYPE DEDUCTION FOR LOCAL VARIABLES. NEW SWITCH CONSTRUCT AND POLY-EXPRESSION.
2. ( 2 HOURS LECTURE ): REVIEW OF INHERITANCE AND INTERFACES. SEALED CLASSES AND INTERFACES.
3. ( 2 HOURS EXERCISE ): EXAMPLES AND GUIDED EXERCISES ON ADVANCED CONSTRUCTS, POLY-EXPRESSION SWITCHES, SEALED CLASSES AND INTERFACES.
4. ( 2 HOURS WORKSHOP ): PRACTICE ON ADVANCED CONSTRUCTS, POLY-EXPRESSION SWITCHES, SEALED CLASSES AND INTERFACES.

KNOWLEDGE AND UNDERSTANDING: KNOW THE RULES AND CONVENTIONS FOR DECLARING IDENTIFIERS AND DEDUCING THE DATA TYPE IN JAVA. LEARN ABOUT ADVANCED PROGRAMMING CONSTRUCTS AND THE NEW SWITCH. UNDERSTAND THE CONCEPT OF LIMITED INHERITANCE.

APPLIED KNOWLEDGE AND UNDERSTANDING: BEING ABLE TO APPLY TYPE DEDUCTION FOR LOCAL VARIABLES USING THE VAR KEYWORD. KNOWING HOW TO USE THE NEW SWITCH CONSTRUCT. KNOW HOW TO USE SEALED CLASSES AND INTERFACES.


DIDACTIC UNIT 2: ENUM, RECORD AND GENERIC TYPES
(LESSON/EXERCISE/WORKSHOP HOURS 4/2/2)

1. ( 2 HOURS LECTURE ): ADVANCED FEATURES OF THE JAVA LANGUAGE. ENUMERATION TYPES. INHERITANCE AND POLYMORPHISM ON ENUMERATION TYPES. RECORD TYPES. RECORDS AND CLASSES. POLYMORPHISM AND RECORDS. METHODS, VARIABLES AND CONSTRUCTORS IN A RECORD. CANON BUILDERS.
2. ( 2 HOURS LECTURE ): REVIEW OF GENERIC TYPES. INHERITANCE AND PARAMETER TYPE. TYPE ERASURE. WILDCARDS. GENERIC METHODS. BOUNDED TYPES.
3. ( 2 ORE EXERCISE): EXAMPLES AND GUIDED EXERCISES ON ENUMERATION TYPES, RECORD TYPES AND GENERIC TYPES.
3. (2 HOURS WORKSHOP): EXERCISES ON ENUMERATION TYPES, RECORD TYPES AND GENERIC TYPES.


KNOWLEDGE AND UNDERSTANDING: UNDERSTAND THE UTILITY AND USE OF ENUMERATION TYPES. UNDERSTAND THE USE OF ENUMERATIONS WITH THE SWITCH CONSTRUCT. UNDERSTAND THE UTILITY OF RECORD TYPES. UNDERSTAND INHERITANCE AND POLYMORPHISM AS THEY APPLY TO RECORD TYPES. UNDERSTAND ERASURE AND HOW INHERITANCE APPLIES WITH GENERIC TYPES.
APPLIED KNOWLEDGE AND UNDERSTANDING: KNOWING HOW TO EXPLOIT INHERITANCE AND POLYMORPHISM WITH ENUMERATIONS. KNOWING HOW TO DEFINE METHODS, VARIABLES AND CONSTRUCTORS IN ENUMERATIONS. KNOW HOW TO USE RECORD TYPES. KNOW HOW TO DECLARE CANONICAL, COMPACT CANONICAL, AND NON-CANONICAL CONSTRUCTORS IN RECORDS. KNOWING HOW TO USE WILDCARDS IN GENERIC TYPES. KNOW HOW TO CREATE GENERIC METHODS. KNOWING HOW TO HANDLE WILDCARD CAPTURE WITH HELPER METHODS.

DIDACTIC UNIT 3: TYPES OF ANNOTATION AND REFLECTION
(LESSON/EXERCISE/WORKSHOP HOURS 4/2/2)

1. ( 2 HOURS LECTURE ): INTRODUCTION TO CODE REFLECTION AND INTROSPECTION. INSTANTIATING A CLASS OBJECT. REFLECTION ON CLASSES, METHODS AND PARAMETER NAMES.
2. ( 2 HOURS LECTURE ): INTRODUCTION TO META-PROGRAMMING. ANNOTATION TYPES: DEFINITION, USE AND PROCESSING. META-ANNOTATIONS. ORDINARY, SINGLE-VALUED, AND MARKER ANNOTATIONS. STANDARD ANNOTATIONS.
3. ( 2 HOURS EXERCISE ): EXAMPLES AND GUIDED EXERCISES ON REFLECTION AND ANNOTATION TYPES.
4. ( 2 HOURS WORKSHOP ): EXERCISE ON REFLECTION AND ANNOTATION TYPES.


KNOWLEDGE AND UNDERSTANDING: UNDERSTAND THE CONCEPT OF REFLECTION AND INTROSPECTION OF TYPES, METHODS AND PARAMETERS. UNDERSTAND WHAT METADATA IS AND ITS USEFULNESS. UNDERSTAND THE UTILITY OF ANNOTATIONS.
APPLIED KNOWLEDGE AND UNDERSTANDING: BEING ABLE TO DEFINE NEW ANNOTATION TYPES. KNOW HOW TO CREATE AN ANNOTATION PROCESSOR. KNOW HOW TO USE STANDARD ANNOTATIONS.

DIDACTIC UNIT 4: LAMBDA EXPRESSION AND REFERENCE TO METHODS
(LESSON/EXERCISE/WORKSHOP HOURS 4/2/2)

1. ( 2 HOURS LECTURE ): REVIEW OF LAMBDA EXPRESSIONS AND FUNCTIONAL INTERFACES. LAMBDA EXPRESSIONS AND ANONYMOUS CLASSES. EXCEPTION HANDLING. TYPE DEDUCTION FOR LOCAL LAMBDA EXPRESSIONS.
2. ( 2 HOURS LECTURE ): REFERENCE TO METHODS: DEFINITION. REFERENCE TO STATIC AND INSTANCE METHODS. REFERENCE TO CONSTRUCTOR. COMMONLY USED FUNCTIONAL INTERFACES.
3. ( 2 HOURS EXERCISE ): EXAMPLES AND GUIDED EXERCISES ON LAMBDA EXPRESSIONS AND METHOD REFERENCES.
4. ( 2 HOURS WORKSHOP ): EXERCISES ON LAMBDA EXPRESSIONS AND METHOD REFERENCES.

KNOWLEDGE AND UNDERSTANDING: UNDERSTAND THE SYNTAX AND METHODS OF USE OF LAMBDA EXPRESSIONS. UNDERSTAND HOW METHOD REFERENCES WORK.
APPLIED KNOWLEDGE AND UNDERSTANDING: BEING ABLE TO DEFINE AND MANAGE LAMBDA EXPRESSIONS. KNOWING HOW TO HANDLE ANY EXCEPTIONS ASSOCIATED WITH LAMBDA EXPRESSIONS. KNOW HOW TO USE METHOD REFERENCES. KNOWING HOW TO USE COMMONLY USED FUNCTIONAL INTERFACES.



DIDACTIC UNIT 5: STREAM API
(LESSON/EXERCISE/WORKSHOP HOURS 4/2/2)

1. ( 2 HOURS LECTURE ): STREAMS AND PIPELINES. OPTIONAL CLASSES. STREAM SOURCES. STREAM FROM VALUES. STREAMS FROM ARRAYS AND COLLECTIONS.
2. ( 2 HOURS LECTURE ): AGGREGATE OPERATIONS. FILTER AND TRANSFORM STREAMS. TERMINAL OPERATIONS: SEARCH AND REDUCTION.
3. ( 2 HOURS EXERCISE ): EXAMPLES AND GUIDED EXERCISES ON STREAM API.
4. ( 2 HOURS WORKSHOP ): PRACTICE ON STREAM API.


KNOWLEDGE AND UNDERSTANDING: UNDERSTAND THE UTILITY OF THE STREAM API LIBRARY. UNDERSTAND PIPELINES. KNOW THE MAIN METHODS FOR OBTAINING STREAM OBJECTS FROM SOURCES.
APPLIED KNOWLEDGE AND UNDERSTANDING: KNOWING HOW TO USE PIPELINES. KNOWING HOW TO USE THE MOST IMPORTANT AGGREGATION METHODS AND TERMINAL METHODS.


DIDACTIC UNIT 6: CONCURRENCY API AND MODULES
(LESSON/EXERCISE/WORKSHOP HOURS 4/2/2)

1. ( 2 HOURS LECTURE ): REVIEW OF MULTITHREADING. JAVA API ON CONCURRENCY. IMMUTABLE OBJECTS. LOCKS, EXECUTORS. TRAFFIC LIGHTS.
2. ( 2 HOURS LECTURE ): MODULAR ORGANIZATION. MAIN DIRECTIVES. SERVICES WITH SERVICE LOADER. MODULAR JAR.
3. ( 2 HOURS EXERCISE): EXAMPLES AND GUIDED EXERCISES ON CONCURRENCY API AND MODULES.
4. ( 2 HOURS WORKSHOP): PRACTICE ON CONCURRENCY API AND MODULES.

KNOWLEDGE AND UNDERSTANDING: KNOW THE CORE OF THE COMPETITION LIBRARY.

APPLIED KNOWLEDGE AND UNDERSTANDING: KNOWING HOW TO USE THE MAIN CLASSES AND METHODS MADE AVAILABLE BY THE JAVA LIBRARY ON CONCURRENCY.


TOTAL HOURS OF LECTURE/PRACTICE/WORKSHOP 24/12/12
Teaching Methods
IN ORDER TO PROVIDE THE STUDENT WITH THEORETICAL AND METHODOLOGICAL KNOWLEDGE AND WITH PRACTICAL PROJECT SKILLS, THE COURSE WILL CONTAIN BOTH LECTURES AND INTERACTIVE EXERCISES.
CLASSROOM LESSONS WILL COVER ALL THE TOPICS OF THE COURSE.
IN ORDER TO PARTICIPATE TO THE FINAL ASSESSMENT AND TO GAIN THE CREDITS CORRESPONDING TO THE COURSE, THE STUDENT MUST HAVE ATTENDED AT LEAST 70% OF THE HOURS OF ASSISTED TEACHING ACTIVITIES.
Verification of learning
THE EXAMINATION TEST IS AIMED AT ASSESSING OVERALL: KNOWLEDGE AND UNDERSTANDING OF THE CONCEPTS PRESENTED IN THE COURSE; THE ABILITY TO APPLY SUCH KNOWLEDGE FOR THE SOLUTION OF PROBLEMS THROUGH THE ADOPTION OF THE OBJECT-BASED PROGRAMMING PARADIGM, THE CONSTRUCTIONS AND THE ADVANCED FEATURES OF THE JAVA LANGUAGE; MAKING JUDGMENTS, COMMUNICATION SKILLS AND THE CAPACITY TO LEARN. IT CONSISTS OF A PRACTICAL TEST AND AN ORAL INTERVIEW.
THE PRACTICAL TEST IS INTENDED TO ASSESS SKILLS IN CREATING PROGRAMS IN JAVA, AND IT IS CARRIED OUT DIRECTLY ON THE PERSONAL PROCESSING SYSTEM. THEY ARE CONSIDERED MINIMUM ABILITY TO SOLVE THE PROPOSED PROBLEM, WITHOUT RELEVANT SYNTACTIC ERRORS; CONVERSELY THE MAXIMUM ABILITY IS CONSIDERED TO ACHIEVE ALGORITHMIC SOLUTIONS WHICH ARE EFFICIENT AND WHICH MAKE USE OF THE MOST SUITABLE DATA STRUCTURES AND ALGORITHMS, PROPERLY EXPLOITING THE LIBRARIES MADE AVAILABLE BY THE LANGUAGE. THE ORAL EXAMINATION COVERS ALL THE TOPICS OF THE COURSE AND THE EVALUATION IT WILL TAKE INTO ACCOUNT THE KNOWLEDGE DEMONSTRATED BY THE STUDENT AND THE DEGREE OF THEIR DEEPENING, THE CAPACITY TO LEARN DEMONSTRATED, THE QUALITY OF THE EXPOSURE.
FOR THE PURPOSES OF THE FINAL MARK THE PRACTICAL TEST CONTRIBUTES TO 50% AND THE ORAL TEST TO 50%. PRAISE IS GIVEN TO THOSE STUDENTS WHO DEMONSTRATE THE ABILITY TO APPLY THE KNOWLEDGE ACQUIRED EVEN IN CONTEXTS DIFFERENT FROM THOSE PROPOSED DURING THE COURSE.
Texts
CLAUDIO DE SIO CESARI, “IL NUOVO JAVA. GUIDA COMPLETA ALLA PROGRAMMAZIONE MODERNA”, HOEPLI INFORMATICA

TESTI ED URL DI CONSULTAZIONE ED APPROFONDIMENTO
- HERBERT SCHILDT, “JAVA – THE COMPLETE REFERENCE (9TH ED.), ORACLE PRESS
- JAVA TUTORIALS - HTTP://DOCS.ORACLE.COM/JAVASE/TUTORIAL/

SUPPLEMENTARY TEACHING MATERIAL WILL BE AVAILABLE ON THE UNIVERSITY E-LEARNING PLATFORM (HTTP://ELEARNING.UNISA.IT) ACCESSIBLE TO STUDENTS USING THEIR OWN UNIVERSITY CREDENTIALS.
More Information
THE COURSE IS HELD IN ITALIAN
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2024-11-05]