You are on page 1of 46

Java Developer

EPAM
A Training Report
Submitted in partial fulfilment of the requirements for the award of degree of

Bachelor of Technology Computer Science


And Engineering

LOVELY PROFESSIONAL UNIVERSITY


PHAGWARA, PUNJAB

From 14/01/2023 to 29/04/2023

SUBMITTED BY SUBMITTED TO
Name of the student: Yashvardhan Name of the supervisor: Komal Arora
Registration Number: 11912558 Designation: Assistant Professor
Section: K19JA Signature of supervisor:

Industrial Training and Internship (CSE 441)

1
Abstract

The Electricity Billing System project, developed using Spring Boot, aims to automate and
streamline the billing process for electricity utility companies. Leveraging the capabilities of
the Spring Boot framework, the system provides a comprehensive solution for managing
meter readings, billing calculations, invoice generation, and payment processing.

Through a user-friendly web interface, customers can conveniently access and pay their bills,
while meter readers can efficiently submit readings. The system incorporates secure user
registration and authentication, ensuring data privacy and access control. Billing calculations
are performed accurately based on dynamic tariff rates, and invoices are automatically
generated, reducing manual effort and improving efficiency.

The implementation of Spring Boot's integrated modules, including Spring Data JPA for
database management and Spring Security for authentication, ensures robustness and
security. The system also integrates a secure payment gateway, allowing customers to make
payments securely through various payment options.

With the Electricity Billing System, utility companies can streamline their billing procedures,
minimize errors, and reduce administrative overhead. By automating the calculation and
generation of invoices, the system eliminates manual effort and enhances accuracy, ensuring
that customers receive timely and accurate bills.

Moreover, the integration of a secure payment gateway provides customers with a convenient
and reliable payment method. The system supports various payment options, allowing
customers to choose the most suitable mode of payment, while ensuring the security and
integrity of their financial transactions.

In conclusion, the Electricity Billing System, built using the Spring Boot framework,
revolutionizes the electricity billing process by offering a reliable, efficient, and user-friendly
solution. By automating key processes, reducing errors, and providing a seamless payment
experience, this system empowers utility companies to improve customer satisfaction,
enhance operational efficiency, and ensure timely payments.

2
Student Declaration

To whom so ever it may concern

I, Yashvardhan, 11912558, hereby declare that the work done by me on

“JAVA DEVELOPER TRAINING” from 14th January-2023 to 29th April- 2023,


under the supervision of Komal Arora Lovely Professional University,

Phagwara, Punjab, is a record of original work for the partial fulfillment of the
requirements for the award of the degree Computer Science and Engineering.

Name of the Student (Registration Number)


Yashvardhan (11912558)

Yashvardhan
Signature of the student Dated: 30/04/2023.

3
Declaration by the supervisor

To whom so ever it may concern

This is to certify that Yashvardhan, 11912558, from Lovely Professional


University, Phagwara, Punjab, has worked as a trainee in EPAM on campus
training on “Java Development” under my supervision from 14th January 2023 to
29th April 2023. It is further stated that the work carried out by student is a record
of original work to the best of my knowledge for the partial fulfillment ofthe
requirements for the award of the B. TECH, Computer Science and Engineering.

Name of the Supervisor

Komal Arora

Designation of the supervisor

Assistant Professor

Signature of Supervisor

4
Acknowledgement

I would like to express my heartfelt gratitude to all the individuals and organizations who
have contributed to the successful completion of the online electricity billing system project.
Their support, guidance, and encouragement have been invaluable throughout this journey.

First and foremost, I would like to extend my deepest appreciation to our project supervisor,
Komal Arora, for their guidance, expertise, and continuous support. Their valuable insights,
feedback, and mentorship have played a pivotal role in shaping this project and ensuring its
success.

I would also like to thank the faculty and staff of Lovely Professional University, for
providing me with the necessary resources, facilities, and a conducive learning environment.
Their dedication to education and commitment to nurturing young minds have been
instrumental in our academic growth and the completion of this project.

Thank you!

Yashvardhan (11912558)
Lovely Professional University
Date: 30/04/2023

5
Table of Contents

S. No. Title Page

1 Abstract 2

1 Declaration by Student 3

2 Declaration by Supervisors 4

3 Acknowledgement 5
4 Undertaking 7
5 Chapter 1. INTRODUCTION to EPAM 8

6 Chapter-2 INTRODUCTION OF THE PROJECT 13


UNDERTAKEN
7 Chapter-3 TECHNOLOGIES LEARNT DURING 23
EPAM TRAINING
8 Chapter-4 CONCLUSION 42

9 Chapter-5 ACHIEVEMENTS 43

10 Chapter-6 THANK YOU, MENTOR 44

11 Chapter-7 THANK YOU, TRAINING AND 45


PLACEMENT CELL
12 References 46

6
Undertaking by the student for submitting Final Report of EPAM Training

Reg No. 11912558 Student Name: Yashvardhan


Program Name: B Tech, CSE Batch Year: 2019 – 2023
Course Code: P132 Mobile No.: 8709543956

I am grateful to have been provisionally allowed to appear for the ETP viva and I understand the
significance of submitting the final project along with the report to the university after the
completion of my EPAM Training. I am committed to fulfilling this requirement before May
2023 to ensure that my final evaluation is considered by the university.

I am aware that failing to submit the project and report by the given deadline will result in my
final evaluation being discarded by the university, which will ultimately affect my overall
academic performance. Therefore, I am determined to submit my project and report in a timely
manner to avoid any such consequences.

Thank you for your consideration in this matter, and I assure you of my dedication and
commitment to meeting all the necessary requirements.

Signature of student Signature of TPC-School Signature of HOS

7
CHAPTER 1
INTRODUCTION

1.1 About EPAM

EPAM Systems, Inc. is a renowned global software engineering services


company that has been providing exceptional services to a wide range of
industries for over two decades. With over 41,000 highly skilled employees
located across North America, Europe, Asia, and Australia, EPAM has
established itself as a leading player in the software engineering domain.
EPAM's expertise in software development, product engineering, digital
platform engineering, and digital and product design has helped the company
earn a reputation for delivering innovative solutions to its clients.The
company's range of services, which includes enterprise application
development, data management and analytics, cloud computing, user
experience design, and more, is designed to meet the evolving needs of clients
across industries.

EPAM has been recognized as a leader in digital platform engineering


services by industry analysts and has won numerous awards for its work.
This includes being named a Top 100 Global Outsourcing Company by
IAOP for over ten years in a row. With a diverse clientele that includes
many Fortune 500 companies and leading global brands, EPAM is known for
its commitment to delivering high-quality solutions to its clients while
maintaining a strong focus on innovation.

In conclusion, EPAM Systems, Inc. is a highly reputable software engineering


services company that has built a strong presence in the industry through its
dedication to quality, innovation, and exceptional clientservice.

8
1.2 Company’s Vision and Mission

EPAM Systems, Inc. is driven by a strong mission and vision that have
helped the company establish itself as a leader in the software engineering
industry. EPAM's mission is to help its clients succeed through software
engineering excellence. This is achieved through a relentless focus on
innovation and a commitment to building long-term partnerships with
clients.

EPAM's vision is equally compelling - to be the leading provider of software


engineering services to global businesses. The company achieves this by
consistently delivering innovative solutions that exceed client expectations,
while maintaining the highest levels of integrity and professionalism. EPAM
also strives to make a positive impact on society and the environment by
leveraging technology for social good and promoting sustainable practices. By
combining its mission and vision with a deep understanding of clients' needs
and a strong commitment to excellence, EPAM has become a trusted

partner to many Fortune 500 companies and leading global brands. The
company's innovative approach to software engineering has earned it
numerous awards and accolades, and its dedication to creating a positive
impact on society and the environment sets it apart as a socially responsible
organization.

1.3 Company’s core values:

1. Relentless focus on quality: EPAM has a strong commitment to


delivering high-quality solutions to its clients. The company places a

9
great emphasis on quality assurance and testing and strives to exceed
client expectations in every project.

2. Innovation: EPAM is committed to innovation and continuous


improvement. The company encourages its employees to think creatively
and to constantly explore new ideas and technologies to provide the most
innovative solutions to clients.

3. Collaboration: EPAM values collaboration and teamwork. The company


believes that working together leads to better results and encourages its
employees to share their knowledge and expertise with others.

4. Customer centricity: EPAM places a strong emphasis on understanding and


meeting the needs of its clients. The company believes that by puttingthe
customer first, it can build long-term partnerships and achieve success
together.

5. Integrity: EPAM operates with the highest levels of integrity and


professionalism. The company values transparency and honesty in all its
dealings with clients, partners, and employees.

6. Social responsibility: EPAM is committed to making a positive impact on


society and the environment. The company leverages technology for social
good and promotes sustainable practices in all its operations.

By embodying these core values, EPAM has built a strong reputation as a


trusted partner to its clients, a great place to work for its employees, and a
socially responsible organization in the communities where it operates.

10
1.4 Origin and Growth

EPAM was founded in 1993 in Minsk, Belarus as a small software


development company with just four employees. The company's initial focus
was on providing software engineering services to clients in the United States
and Europe. In 1998, EPAM opened its first international office in Princeton,
New Jersey to expand its presence in the US market. Over the next decade,
EPAM continued to grow rapidly, expanding its client base and service
offerings. In 2004, the company opened its first delivery centre in Hungary,
followed by additional centres in Ukraine, Russia, and other locations. EPAM
also went public on the New York Stock Exchange in2012, marking a major
milestone in its growth journey.

Today, EPAM is a global leader in software engineering services, with over


43,000 employees across more than 35 countries. The company provides a
wide range of services, including software development, product design,
testing and quality assurance, and digital platform engineering. EPAM serves
clients in a variety of industries, including financial services, healthcare,
retail, and technology.

Despite its rapid growth, EPAM has remained committed to its core values of
quality, innovation, collaboration, customer centricity, integrity, and social
responsibility. The company's dedication to these values has helped it

to build long-term partnerships with clients, attract and retain top talent, and
make a positive impact on society and the environment.

1.5 Various department and their functions

1. Software Engineering: This is the core department of EPAM, responsiblefor


designing and developing software solutions that meet client needs. The
team includes software engineers, architects, developers, and testers

11
who work together to create high-quality software products and
platforms.

2. Product Design: This department is responsible for creating intuitive and


engaging user experiences that help clients achieve their business goals.
The team includes user experience designers, visual designers, and product
managers who work together to create designs that are both functional and
aesthetically pleasing.

3. Quality Assurance: This department is responsible for ensuring that all


software products and platforms meet the highest standards of quality. The
team includes quality assurance engineers, testers, and analysts whowork
to identify and address any defects or issues in the software.

4. Digital Platform Engineering: This department is responsible for designing


and building scalable and secure digital platforms that enable clients to
achieve their business objectives. The team includes cloud architects,
DevOps engineers, and platform engineers who work togetherto create
cutting-edge platforms that are both flexible and reliable.

5. Business Consulting: This department is responsible for helping clients


identify and implement solutions to their business challenges. The team
includes business analysts, consultants, and project managers who work to
understand client needs and recommend strategies for success.

Each of these departments plays a critical role in helping EPAM deliver value
to its clients. By leveraging the unique skills and expertise of each
department, EPAM can create customized solutions that meet clientneeds and
drive business results.

12
CHAPTER 2
INTRODUCTION TO PROJECT

Throughout the period of the internship, we learned a lot of skills. Every skill
that we learned or gained have different scopes and each skill plays avital role
in our lives. The scope of some skills that we learned are mentioned below:

• Teamwork

• Problem solving

• Co-ordination

• Interpersonal Skills

• Time Management

2.1 Training Undertaken:

Java Development

Java development is a key area of expertise for EPAM Systems, Inc. Java is
a versatile programming language that is used to create a wide range of
applications, from enterprise systems to web-based applicationsand mobile
apps. EPAM's team of Java developers has extensive experience in creating
high-quality, scalable, and secure software solutions using the latest Java
technologies.

The Java development team at EPAM is comprised of skilled developers


who are experts in Java, as well as other complementary technologies such
as Spring, Hibernate, and AngularJS. They work closely with

13
clients to understand their business needs and develop customized
solutions that meet those needs.

EPAM's Java development services include application development,


legacy system migration, software maintenance and support, and cloud-
based development. The company has experience working with a rangeof
industries, including financial services, healthcare, retail, and technology.
One of the key benefits of working with EPAM for Java development is the
company's focus on innovation and cutting-edge technologies. The Java
development team is always exploring new tools and technologiesthat can
be used to create better and more efficient solutions for clients.

In addition to its technical expertise, EPAM is known for its commitment


to quality and customer satisfaction. The company has a strong focus on
delivering solutions that meet or exceed client expectations, and it uses
rigorous testing and quality assurance processesto ensure that all software
products are of the highest quality.

Overall, EPAM's Java development services are an excellent choice for


companies looking to create high-quality, customized software solutions
using the latest technologies and development practices.

14
2.2 Overview of project

The Spring Boot project on electricity billing system is a web-based application developed
using the Spring Boot framework. It provides a comprehensive solution for managing the
billing process of an electricity utility company. The system includes features such as meter
reading submission, billing calculation, invoice generation, and payment processing. With
Spring Boot's ease of development and powerful features, the project offers a scalable and
efficient solution. It utilizes Java and Spring Boot's robust ecosystem, including Spring Data
JPA for database connectivity, Thymeleaf for dynamic web page rendering, and Bootstrap for
responsive user interfaces. The project aims to streamline the electricity billing process,
enhance accuracy, and improve customer satisfaction.

15
2.3 Project Features

2.3.1 Login page.

16
2.3.2 Landing page

2.3.3 Add customer and meter number

17
2.3.4 All customers details

2.3.5 Calculate electricity bill

18
19
2.3.6 Generate Bill

20
2.3.7 Monthly bill viewer

21
2.4 Technology used in project.

2.4.1 SpringBoot

Spring Boot is a powerful and widely used framework for building


enterprise-grade applications in Java. It provides a streamlined
development experience, with a range of built-in tools and libraries that
make it easy to create scalable, secure, and high-performance applications.
With Spring Boot, developers can quickly create standalone, production-
ready applications with minimal configuration, freeing up time to focus on
building the features that matter. The framework's modular architecture
and extensive documentation make itan ideal choice for developers
looking to build robust, reliable, and efficient applications.

2.4.2 MySQL

MySQL is a widely used open-source relational database management


system that provides a fast, efficient, and scalable solution for storing and
managing large amounts of data. It offers a range of features that make it an
ideal choice for developers, including support for multiple storage engines,
high-performance indexing, and a robust security model. MySQL is
compatible with a wide range of programming languages and development
frameworks, making it easy to integrate with existing applications. The
system's user-friendly interface and extensive documentation make it
accessible to developers of all levels ofexperience. Whether you're building
a small-scale web application or a large-scale enterprise solution, MySQL
provides a reliable and flexible data storage solution.

22
CHAPTER 3
TECHNOLOGIES LEARNT DURING INTERSHIP TRAINING

3.1 JAVA BASICS

3.1.1 Variables and Data Types: Variables are used to store data in a
Java program. A variable can hold different types of data, such as
integers,floating-point numbers, and strings. Here is an example:

int age = 25;


float weight = 65.5f;
String name = "John Doe";

3.1.2 Operators: Java has a range of operators that can be used to


performmathematical, logical, and relational operations. Here are some
examples:

int x = 10, y = 5;
int sum = x + y; // Addition operator
int diff = x - y; // Subtraction operator
boolean result = x > y; // Relational operator (greater than)

3.1.3 Control Structures:


Java provides a range of control structures that allow you to perform
actions based on conditions. These include if/else statements, for loops,
while loops, and switch statements. Here's an example of a for loop:

for (int i = 0; i < 5; i++) {


System.out.println("Iteration: " + i);
}

23
3.1.4 Classes and Objects: Java is an object-oriented programming
language,which means that programs are made up of classes and objects. A
class is a blueprint for creating objects, while an object is an instance of a
class. Here's an example of a class and object:

class Person {
String name;int
age;

void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " +
age + " years old.");
}
}

Person person = new Person();


person.name = "John";
person.age = 25;
person.sayHello();

3.1.5 Encapsulation: Encapsulation is the concept of bundling data and


methods that operate on that data within a single unit, such as a class. This
allows you to hide the internal details of the object from the outsideworld
and only expose what's necessary. The private keyword is used to
encapsulate fields and methods within a class, preventing direct access
from outside the class. Here's an example:

public class Person {


private String name;
private int age;

public String getName() {


return name;
}

public void setName(String name) {

24
this.name = name;
}

public int getAge() {


return age;
}

public void setAge(int age) {


this.age = age;
}
}

3.1.6 Polymorphism: Polymorphism is the ability of an object to take on


many forms. In Java, this is achieved through method overriding and method
overloading. Method overriding occurs when a subclass provides its own
implementation of a method that is already provided byits parent class.
Method overloading occurs when a class has multiple methods with the same
name but different parameters. Here's an example:

public class Animal {


public void makeSound() {
System.out.println("Animal sound");
}
}

public class Cat extends Animal {


@Override
public void makeSound() {
System.out.println("Meow");
}
}

public class Dog extends Animal {


@Override
public void makeSound() {

25
System.out.println("Woof");
}

public void makeSound(int volume) {


System.out.println("Woof at volume " + volume);
}
}

In this example, the Animal class provides a default implementation ofthe


makeSound() method. The Cat and Dog classes override this method
with their own implementation. The Dog class also has an overloaded
version of the makeSound() method that takes an integer parameter.

3.1.7 Enum: An enum is a special type of class that represents a fixed set
ofconstants. Enum constants are implicitly static and final, and can be
accessed using the dot notation. Here's an example:

public enum Day {


MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}

Day today = Day.MONDAY; System.out.println("Today


is " + today);

In this example, the Day enum represents a fixed set of days of the week.
The today variable is assigned the MONDAY constant, whichcan be
accessed using the dot notation.

26
3.1.8 String: A String is a sequence of characters that is used to represent
text.In Java, strings are represented using the String class, which provides a
range of methods for manipulating strings. Here's an example:

String greeting = "Hello, world!";


int length = greeting.length(); // Returns 13
String upperCase = greeting.toUpperCase(); // Returns "HELLO,
WORLD!"

In this example, the greeting variable is a String that contains the text
"Hello, world!". The length() method returns the length of the string,
while the toUpperCase() method returns a new string with all the
characters converted to uppercase.

3.1.9 Annotations:

Annotations are a powerful tool in Java that allow developers to add


metadata to their code. They are essentially a way of attaching additional
information to a class, method, or field, which can then be used by other
parts of the program.
Annotations start with the @ symbol, followed by the annotation name.
Some of the commonly used annotations in Java include @Override,
@Deprecated, and @SuppressWarnings.
The @Override annotation is used to indicate that a method is meant to
override a method in a superclass. This helps to ensure that the method
signature is correct and prevents bugs that might arise from typos or other
mistakes.
The @Deprecated annotation is used to mark a method, class, or field asno
longer recommended for use. This is useful for developers who are
working on legacy code and want to alert other developers to the fact that a
particular method or class is no longer being actively maintained. The
@SuppressWarnings annotation is used to suppress compiler warnings for
a particular piece of code. This can be useful in situations where a
developer knows that a warning is safe to ignore or where the warning is
simply noise that they do not want to see.

27
Here's an example of how annotations can be used in Java:

public class MyClass {

@Override
public void myMethod() {
// do something
}

@Deprecated
public void oldMethod() {
// do something old
}

@SuppressWarnings("unchecked") public
void someMethod() { List<String> myList
= new ArrayList();
// do something with myList
}

In the example above, we're using three different annotations. The


@Override annotation is used to indicate that the myMethod() method is
meant to override a method in a superclass. The @Deprecated annotation is
used to indicate that the oldMethod() method is no longer recommended
for use. Finally, the @SuppressWarnings annotation is used to suppress
warnings about the use of a raw type (i.e., List instead of List<String>) in
the someMethod() method.

28
3.2 Advanced Java

3.2.1 Multithreading: Multithreading is a technique in which multiple


threads of execution are created within a single process. It allows for
concurrent execution of different parts of a program, which can result in
faster performance and more efficient use of system resources. Here's an
example of creating a thread in Java:

public class MyThread extends Thread {

public void run() {


// code to be executed in this thread
}

public static void main(String[] args) {


MyThread thread = new MyThread();
thread.start();
}

In the example above, we're creating a new thread by extending the Thread
class and overriding the run() method. We then create an instanceof this
class and call the start() method to begin execution of the thread.

3.2.2 Reflection: Reflection is a powerful technique in Java that allows


developers to inspect and manipulate the internal state of an object at
runtime. It can be used to dynamically create new objects, invoke
methods, and access fields that are not normally visible. Here is an
example of using reflection to create a new object:

29
public class MyClass {

public String myMethod() {


return "Hello, world!";
}

public static void main(String[] args) throws Exception {


Class<?> clazz = Class.forName("MyClass");
Object obj = clazz.newInstance();
Method method = clazz.getDeclaredMethod("myMethod");
String result = (String) method.invoke(obj);
System.out.println(result);
}

In the example above, we're using reflection to create a new instance of the
MyClass class, then using reflection again to invoke the myMethod()
method and print the result.

3.2.3 Generics: Generics are a way of making Java code more flexible and
reusable by allowing classes and methods to work with a variety of
different types. They provide a way of defining a type parameter that canbe
used throughout the code. Here's an example of using generics to create a
list of strings:

List<String> myList = new ArrayList<String>();


myList.add("foo");
myList.add("bar");
String value = myList.get(0);
System.out.println(value);

In the example above, we're creating a new ArrayList of strings, adding


some values to it, and then retrieving the first value using the get()

30
method. The use of generics allows us to ensure type safety and avoid
runtime errors.

3.2.4 Lambda expressions: Lambda expressions are a way of defining


anonymous functions in Java. They can be used to make code more
concise and readable, especially when working with functional interfaces.
Here's an example of using a lambda expression to sort a listof strings:

List<String> myList = new ArrayList<String>();


myList.add("foo");
myList.add("bar");
Collections.sort(myList, (s1, s2) -> s1.compareTo(s2));System.out.println(myList);

In the example above, we're using a lambda expression to define a


comparator function that compares two strings using the compareTo()
method. We then pass this lambda expression to the sort() method of the
Collections class to sort the list of strings.

3.3 Java Collections:

Java Collections is a framework of classes and interfaces that provide


efficient and flexible ways to store, manipulate, and access groups of
objects. It is part of the Java Core API and provides a set of data
structures like Lists, Sets, Maps, Queues, and more. Here's a brief
summary of some of the key concepts:

3.3.1 List Interface: Lists are ordered collections of elements that


allow duplicates. The List interface provides several methods for
adding, removing, and accessing elements. Example:

List<String> names = new ArrayList<>();


names.add("Alice");
names.add("Bob");
names.add("Charlie");

31
System.out.println(names); // Output: [Alice, Bob, Charlie]

3.3.2 Set Interface: Sets are collections of elements that do not allow
duplicates. The Set interface provides methods for adding, removing,
and checking if an element is present. Example:

Set<Integer> numbers = new HashSet<>();


numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println(numbers); // Output: [1, 2, 3]

3.3.3 Map Interface: Maps are collections that store key-value pairs.
The Map interface provides methods for adding, removing, and
accessing elements by key. Example:

Map<String, Integer> ages = new HashMap<>();


ages.put("Alice", 30);
ages.put("Bob", 35);
ages.put("Charlie", 40);
System.out.println(ages.get("Bob")); // Output: 35

3.3.4 Queue Interface: Queues are collections that store elements in a


specific order. The Queue interface provides methods for adding,
removing, and accessing elements in a first-in, first-out (FIFO)
manner. Example:

Queue<String> queue = new LinkedList<>();


queue.add("Alice");
queue.add("Bob");
queue.add("Charlie");
System.out.println(queue.poll()); // Output: Alice

32
3.3.5 Enum: An enum is a special type of class that represents a fixed
set of constants. Enum constants are implicitly static and final andcan be
accessed using the dot notation. Here's an example:

enum Days { MONDAY, TUESDAY, WEDNESDAY,


THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Days today = Days.MONDAY;
System.out.println(today); // Output: MONDAY

Overall, Java Collections provides a powerful and flexible way to work with
groups of objects in Java, making it an essential tool for any Java developer.

3.4 Spring MVC

Spring MVC is a framework within the Spring ecosystem that provides a


model-view-controller architecture for building web applications. It is builton
top of the core Spring framework and allows developers to build scalable,
maintainable, and robust web applications.

3.4.1 Model-View-Controller (MVC)

The Model-View-Controller (MVC) architecture is a widely used patternfor


building web applications. In this pattern, the application is divided into
three components: the model, the view, and the controller.

The Model represents the data and the business logic of the application.
The View is responsible for rendering the data to the user interface.

The Controller receives the input from the user and interacts with boththe
Model and the View.

This architecture provides a clean separation of concerns and makes the


application easier to test and maintain.

33
3.4.2 Spring MVC Architecture

The Spring MVC architecture is built on top of the MVC pattern. The
following diagram shows the high-level architecture of Spring MVC:

In this architecture, the front-end sends a request to the controller. The


controller then interacts with the model to retrieve the necessary data and
passes it to the view. The view then renders the data and sends it back to
the front-end as a response.

34
3.4.3 Spring MVC Components

The following are the key components of the Spring MVC framework:

 DispatcherServlet: This is the front controller of the Spring MVC


framework. It intercepts all the requests coming to the application
and delegates them to the appropriate handler.

 HandlerMapping: This component maps the incoming requests tothe


appropriate handler.

 Controller/Handler: This component processes the incoming


request and returns the appropriate view.

 ViewResolver: This component maps the logical view name


returned by the controller/handler to the actual view.

 ModelAndView: This object contains the data that the


controller/handler wants to pass to the view.

 Model: This component represents the data that the view will
render.

35
3.5 SpringBoot

Spring Boot is a powerful framework for building modern Java-based


applications. It provides a streamlined way to build, package, and deploy
applications with minimal configuration. Some of the key features of Spring
Boot include embedded servers, auto-configuration, and a command-line
interface for running and testing applications.

With Spring Boot, developers can focus on writing code instead of


configuring and managing the infrastructure. The framework provides a wide
range of starter dependencies that can be easily added to any project,
including support for various data sources, web frameworks, and security
features.

In summary, Spring Boot is a powerful and easy-to-use framework for


building modern Java applications. It simplifies the development processand
allows developers to focus on writing high-quality code.

3.5.1 Auto-configuration Spring Boot provides a powerful auto-


configuration feature that automatically configures the application basedon
its classpath and other settings. This greatly reduces the amount of
boilerplate code that developers need to write, allowing them to focus on
writing business logic. For example, to add support for a database, you can
simply include the appropriate starter dependency in your pom.xml file:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

3.5.2 Embedded Servers Spring Boot includes several embedded


servers that can be used to run and test applications, including Tomcat,
Jetty, and Undertow. This means that developers do not need to worry
about installing and configuring a separate server to run them

36
application. Here's an example of configuring an embedded Tomcatserver:

@SpringBootApplication public
class MyApplication {

public static void main(String[] args) {


SpringApplication.run(MyApplication.class, args);
}

@Bean
public TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() { @Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
}

@Bean
public ServletWebServerFactory servletContainer() {
return new TomcatServletWebServerFactory();
}

3.5.3 Spring Data Spring Boot provides powerful support for working
with data, including support for JDBC, JPA, and other data sources.
Developers can use Spring Data to write simple, elegant code for working
with databases. Here is an example of using Spring Data to saveand
retrieve data from a MySQL database:

37
@Repository
public interface UserRepository extends JpaRepository<User, Long> {

User findByUsername(String username);

3.5.4 RESTful Web Services Spring Boot includes powerful support for
building RESTful web services. Developers can use Spring MVC to easily
create RESTful endpoints, and Spring Boot provides auto- configuration
support for many common use cases. Here's an example ofdefining a
RESTful endpoint using Spring MVC:

@RestController
@RequestMapping("/api") public
class MyRestController {

@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}

In summary, Spring Boot is a powerful framework for building modern Java


applications. Its key features include auto-configuration, embedded servers,
powerful support for working with data, and support for building RESTful web
services. By simplifying the development process, Spring Boot allows developers
to focus on writing high-quality code.

38
3.6 MySQL

MySQL is a free and open-source relational database management system. Itis


one of the most widely used databases in the world, known for its reliability,
flexibility, and scalability. MySQL supports multiple storage engines, which
allows developers to choose the one that best suits their needs. It also supports
a variety of programming languages, making it a popular choice for web
applications. MySQL is used by many large organizations, including Facebook,
Google, and Twitter, as well as by manysmall and medium-sized businesses.
Its popularity and ease of use make it an excellent choice for anyone looking to
manage data efficiently and effectively.

3.7 Angular

Angular is a popular front-end development framework that allows


developers to build dynamic, responsive, and modern web applications.
Developed and maintained by Google, Angular offers a range of features and
tools to help developers build complex and interactive user interfaces. With
Angular, developers can create reusable components, manage data binding,
and implement features like routing and animation. Angular also includes
built-in support for testing, making it easier to ensure the quality and stability
of applications. Thanks to its popularity and large community,developers can
find a wealth of resources and documentation to help them learn and use
Angular effectively.

3.8 TypeScript

TypeScript is a superset of JavaScript that offers optional static typing,


enhanced object-oriented programming features, and improved scalability

39
and maintainability for large-scale applications. Developed and maintained by
Microsoft, TypeScript can be used with any JavaScript library or framework
and compiles to plain JavaScript, allowing developers to take advantage of its
features while maintaining compatibility with existing codebases. With
TypeScript, developers can catch potential errors early, benefit from better
code completion and refactoring support, and enjoy a more robust and
maintainable codebase. TypeScript is widely used in enterprise-level
applications, as well as in popular frameworks like Angular,React, and Vue.

3.9 Thymeleaf

Thymeleaf is a modern server-side Java template engine that allows


developers to easily build dynamic web applications. Unlike traditional
template engines, Thymeleaf templates can be processed either on the server-
side or on the client-side, making it highly flexible and versatile. Thymeleaf
supports a wide range of templating features, including expressions,
conditionals, loops, iteration, and more. It also integrates with Spring
Framework, allowing developers to take advantage of its full-stack Java web
development capabilities. Thymeleaf is highly configurable and extensible,
making it a popular choice for building enterprise-level web applications.
With its rich set of features and easy-to-use syntax, Thymeleafis a great option
for Java developers looking to build dynamic, responsive, and maintainable
web applications.

3.10 Okta

Okta is a cloud-based identity management platform that provides


authentication, authorization, and user management services for web and
mobile applications. It allows developers to build secure applications and
protect user data with ease. Okta provides features such as single sign-on
(SSO), multi-factor authentication (MFA), social login, and user
management. It integrates easily with popular development frameworks

40
such as Spring Boot, Angular, and React. Okta's developer-friendly
approach and extensive documentation make it a popular choice for
developers looking for a secure identity management solution.

41
CHAPTER 4
CONCLUSION

Based on the skills I have acquired during my EPAM internship, I have


developed a strong proficiency in core, advanced and professional Java
concepts. The quiz application I created demonstrates my ability to apply these
fundamental principles to practical situations, which is a valuable skill in
software development.

Furthermore, I have gained experience in using Spring MVC, Spring Boot,


Angular, and Thymeleaf to develop full-stack applications such as an e-
commerce platform, airline reservation system, inventory management
system, university management system, loan management system, and
hospital management system. These projects have allowed me to apply
software development principles and methodologies to solve real-world
problems.

Overall, my ability to work effectively in a team environment, meet


deadlines, and deliver high-quality software products has improved
significantly. I possess strong problem-solving and critical thinking skillsthat
have enabled me to identify and resolve complex issues in software
development.

In conclusion, I am proud of what I have accomplished during my EPAM


internship. I have demonstrated my skills as a software developer and proven
that I can deliver high-quality work in a timely manner.My experience with a
variety of programming languages, frameworks, and tools positions me well for
a bright future in the software development industry. I look forward to
contributing my skills and expertise to new software development projects and
continuing to learn and grow in this field.

42
CHAPTER 5
ACHIEVEMENTS

During my EPAM internship, I achieved a significant level of proficiency in


Java programming. I created a quiz application that utilized core Java and
advanced Java concepts, such as inheritance, polymorphism, and exception
handling. I also developed various management systems and a full-stack e-
commerce application using Spring Boot and Thymeleaf, which improved my
skills in Java, Spring, and web development.

Furthermore, I developed an airline reservation system that included


functionalities such as flight booking, cancellation, and reservation status
tracking. I also created an inventory management system that streamlined
inventory tracking and management processes. I developed a university
management system to manage student records, grades, and courses, and a loan
management system to facilitate loan application and approval processes.
Lastly, I created a hospital management system that streamlined hospital
operations such as appointment scheduling, medical record keeping,and patient
billing.

Throughout these projects, I learned to collaborate effectively with team


members, prioritize tasks, and meet deadlines. I also honed my skills in
problem-solving, troubleshooting, and debugging software applications. My
experience at EPAM has enabled me to apply software development principles
and methodologies to real-world scenarios and has significantly improved my
programming skills.

In addition, my EPAM internship was a significant achievement in my


software development journey. I am proud of the various projects I
developed, the skills I acquired, and the experience I gained working
collaboratively in a team environment. I believe these achievements have
prepared me to be an asset to any software development project inthe future.

43
CHAPTER 6
THANK YOU, MENTOR

Throughout my EPAM internship journey, I had the privilege of working


under the guidance and mentorship of Komal Arora Ma’am. She played a
pivotal role in shaping my skills as a Java developer and helped me overcome
numerous obstacles. Her extensive knowledge of the subject matter and her
passion for teaching has had a profound impact on my growth as a developer.

Komal Ma’am provided me with the necessary support and encouragement


needed to succeed in the internship. Her ability to explain complex conceptsin
simple terms and her patience in addressing my questions helped me to
understand the subject matter thoroughly. Furthermore, her constant
motivation and constructive feedback helped me to enhance my skills and
refine my approach to problem-solving.

I am grateful for the invaluable guidance and support that Komal Ma’am
provided me throughout my internship journey. Her dedication to my
development as a Java developer has enabled me to gain a deeper
understanding of Java development principles and methodologies. I would
like to express my sincere gratitude to her for her mentorship and for helping
me achieve my goals. Thank you, Komal Ma’am, for being an outstanding
teacher and mentor.

44
CHAPTER 7
THANK YOU, TRAINING AND PLACEMENT CELL

I would like to express my sincere gratitude to the Training and Placement Cell
of Lovely Professional University, Phagwara, Punjab, for providing mewith the
opportunity to intern with EPAM. This experience has been instrumental in
shaping my skills and knowledge as a software developer.

Through this internship, I have gained practical experience in using various


programming languages, frameworks, and tools. This experience would not
have been possible without the guidance and support of the Training and
Placement Cell, who have been instrumental in connecting me with EPAMand
other reputed companies.

I would like to extend my appreciation for the efforts made by the Training
and Placement Cell in organizing campus recruitment drives and providing us
with the necessary training and resources to excel in our chosen field.
The skills and knowledge I have gained during this internship will
undoubtedly benefit me in my future career.

Once again, I express my heartfelt gratitude to the Training and Placement


Cell for their unwavering support and guidance throughout my journey.
Thank you for providing me with the opportunity to showcase my skills and
acquire valuable experience.

45
References

 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
 https://www.baeldung.com/spring-boot
 https://github.com/spring-projects/spring-petclinic
 https://stackoverflow.com/
 https://spring.io/guides
 https://dzone.com/
 https://medium.com/

46

You might also like