0% found this document useful (0 votes)
11 views39 pages

1448

The document presents a comparative study of four web application design models using Java technologies: Model 1, Model 2, Struts, and JavaServer Faces (JSF). It evaluates their ease of development and performance through the implementation of an online store application called BuyDirect. The findings suggest that while JSF offers rapid development advantages, concerns about performance overhead may affect its adoption.

Uploaded by

zapadswg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views39 pages

1448

The document presents a comparative study of four web application design models using Java technologies: Model 1, Model 2, Struts, and JavaServer Faces (JSF). It evaluates their ease of development and performance through the implementation of an online store application called BuyDirect. The findings suggest that while JSF offers rapid development advantages, concerns about performance overhead may affect its adoption.

Uploaded by

zapadswg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

Download the full version and explore a variety of ebooks

or text books at https://ebookball.com

A Comparative Study of Web Application Design


Models Using the Java Technologies 1st edition by
Budi Kurniawan, Jingling Xue ISBN 3540213710
978-3540213710

_____ Follow the link below to get your download now _____

https://ebookball.com/product/a-comparative-study-of-web-
application-design-models-using-the-java-technologies-1st-
edition-by-budi-kurniawan-jingling-xue-
isbn-3540213710-978-3540213710-12688/

Access ebookball.com now to download high-quality


ebooks or textbooks
Here are some recommended products for you. Click the link to
download, or explore more at ebookball.com

Java for the Web with Servlets JSP and EJB 1st edition by
Kurniawan Budi ISBN 073571195X 9780735711952

https://ebookball.com/product/java-for-the-web-with-servlets-jsp-and-
ejb-1st-edition-by-kurniawan-budi-isbn-073571195x-9780735711952-12630/

An Efficient Multidimensional Data Model for Web Usage


Mining 1st edition by Edmond Wu, Michael Ng, Joshua Huang
ISBN 3540213710 9783540213710
https://ebookball.com/product/an-efficient-multidimensional-data-
model-for-web-usage-mining-1st-edition-by-edmond-wu-michael-ng-joshua-
huang-isbn-3540213710-9783540213710-10862/

Full Stack AngularJS for Java Developers Build a Full


Featured Web Application from Scratch Using AngularJS with
Spring RESTful 1st Edition by Ravi Kant Soni ISBN
1484231988 9781484231982
https://ebookball.com/product/full-stack-angularjs-for-java-
developers-build-a-full-featured-web-application-from-scratch-using-
angularjs-with-spring-restful-1st-edition-by-ravi-kant-soni-
isbn-1484231988-9781484231982-16168/

Java Web Services Using Java in Service Oriented


Architectures 1st Edition by David A Chappell, Tyler
Jewell ISBN 0596002696 9780596002695
https://ebookball.com/product/java-web-services-using-java-in-service-
oriented-architectures-1st-edition-by-david-a-chappell-tyler-jewell-
isbn-0596002696-9780596002695-11376/
Business Web Strategy Design Alignment and Application 1st
Edition by Latif Al Hakim, Massimo Memmola 1605660248
978-1605660240
https://ebookball.com/product/business-web-strategy-design-alignment-
and-application-1st-edition-by-latif-al-hakim-massimo-
memmola-1605660248-978-1605660240-14160/

Web Application Security, a Beginner's Guide 1st edition


by Bryan Sullivan, Vincent Liu ISBN 0071776168
978-0071776165
https://ebookball.com/product/web-application-security-a-beginner-s-
guide-1st-edition-by-bryan-sullivan-vincent-liu-
isbn-0071776168-978-0071776165-16468/

Data Structures Abstraction and Design Using Java 1st


edition by Elliot Koffman, Paul Wolfgang ISBN 0470128704
978-0470128701
https://ebookball.com/product/data-structures-abstraction-and-design-
using-java-1st-edition-by-elliot-koffman-paul-wolfgang-
isbn-0470128704-978-0470128701-16346/

Web Animation using JavaScript Develop and Design 1st


Edition by Julian Shapiro ISBN 0134096703 9780134096704

https://ebookball.com/product/web-animation-using-javascript-develop-
and-design-1st-edition-by-julian-shapiro-
isbn-0134096703-9780134096704-16170/

Global Networks and Local Values A Comparative Look at


Germany and the United States 1st Edition by Committee to
Study Global Netoworks ISBN 9780309171298
https://ebookball.com/product/global-networks-and-local-values-a-
comparative-look-at-germany-and-the-united-states-1st-edition-by-
committee-to-study-global-netoworks-isbn-9780309171298-11726/
A Comparative Study of Web Application Design Models
Using the Java Technologies

Budi Kurniawan and Jingling Xue

School of Computer Science and Engineering


University of New South Wales
Sydney, NSW 2052, Australia

Abstract. The Servlet technology has been the most widely used technology for
building scalable Web applications. In the events, there are four design models
for developing Web applications using the Java technologies: Model 1, Model
2, Struts, and JavaServer Faces (JSF). Model 1 employs a series of JSP pages;
Model 2 adopts the Model-View-Controller pattern; Struts is a framework
employing the Model 2 design model; and JSF is a new technology that
supports ready-to-use components for rapid Web application development.
Model 1 is not recommended for medium-sized and large applications as it
introduces maintenance nightmare. This paper compares and evaluates the ease
of application development and the performance of the three design models
(Model 2, Struts, and JSF) by building three versions of an online store
application using each of the three design models, respectively.

1 Introduction

Today, Web applications are the most common applications for presenting dynamic
contents. There are a number of technologies for building Web applications, the most
popular of which is the Servlet technology [5]. This technology gains its popularity
from its superiority over other technologies such as CGI and PHP [2], [3], [13].
Servlets are cumbersome to develop, however, because sending HTML tags
requires the programmer to compose them into a String object and send this object to
the browser. Also, a minor change to the output requires the servlet to be recompiled.
To address this issue, Sun Microsystems invented JavaServer Pages (JSP) [4]. JSP
allows HTML tags to be intertwined with Java code and each page is translated into a
servlet. A JSP page is a servlet. However, compilation occurs automatically when the
page is first requested. As a result, changing the output does not need recompilation.
In addition, JSP enables the separation of presentation from the business logic through
the use of JavaBeans and custom tag libraries. The norm now in developing Java-
based Web applications is to use servlets along with JavaServer Pages.
In the later development, there are a number of design models for building
servlet/JSP applications: Model 1, Model 2, Struts [12], and JSF [6]. Model 1 and
Model 2 were first mentioned in the early specifications of JSP. Model 1 strictly uses
JSP pages, with no servlets, and Model 2 uses the combination of both servlets and
JSP pages. The terms of Model 1 and Model 2 have been used ever since. Model 1 is

J.X. Yu, X. Lin, H. Lu, and Y. Zhang (Eds.): APWeb 2004, LNCS 3007, pp. 711–721, 2004.
© Springer-Verlag Berlin Heidelberg 2004
712 B. Kurniawan and J. Xue

suitable for prototypes and very small applications, and Model 2 is the recommended
design model for medium sized and large applications.
As Model 2 gained more acceptances in the industry, an open source initiative to
build the Struts Framework was initiated. Struts perfects Model 2 by providing the
controller part of the Model-View-Controller of Model 2. In addition, Struts provides
better page navigation management and several custom tag libraries for more rapid
development. Despite its steep learning curve and the fact that it was never defined in
any specification, Struts has been gaining popularity as the alternative to Model 2.
JavaServer Faces [6] is built under the Java Community Process under JSR-127.
Sun Microsystems proposed this technology in the hope that JSF will be the ultimate
model for building Java Web applications. The most important feature of JSF is the
availability of ready-to-use components such as extensible UI components, easy page
navigation, input validators, data converters and JavaBeans management.
The problem facing servlet/JSP programmers are to choose the most appropriate
design model. Clearly, JSF provides a better solution in regard to development time.
However, some people are not sanguine to adopt this technology for fear of
performance penalty due to the overhead of the JSF implementation.
We build three versions of an online store application named BuyDirect using
Model 2, Struts and JSF. The parameters compared are the number of lines of code,
the number of classes, and the performance measurement results. We investigate
which of the design models allows the most rapid development process. We evaluate
the performances of the applications built upon these models. We provide some
suggestions to perfect the existing design models to make development more rapid.
The rest of the paper is organised as follows. Section 2 discusses the issues in Web
development. Section 3 explains how the three design models address these
development issues. Section 4 provides the details of the hardware and software used
in these experiments. Section 5 presents the experiment results and analysis. Section 6
reviews the related work. Section 7 concludes by offering some suggestions to
improve the existing design models.

2 Java Web Development Issues

All Java Web development uses the Servlet technology as the underlying technology.
As such, all Java Web applications have certain issues that need to be addressed:
− User Interface. The user interface is what the client browser renders as HTML
tags. Any server-side component used in the application must be encoded into the
corresponding HTML elements. Besides for displaying the content and data, the
user interface is also responsible in receiving input from the user.
− Input Validation. User input needs to be validated. There are two types of input
validation, server-side and client-side. As the name implies, the server-side input
validation is performed on the server after the input reaches the server. Client-side
input validation is done on the browser, usually by using JavaScript or other
scripting languages. The advantages of using client-side input validation are
prompt response and reducing the server workload. The server-side input
validation should always be performed regardless the presence of client-side
validation because there is no guarantee the user browser's scripting feature is
being on and malicious users can easily work around client-side validation.
A Comparative Study of Web Application Design Models 713

− Model Objects. Model objects in Java-based Web applications are in the forms
of JavaBeans. Model objects make up the Model part of the MVC based design
model. A model object can be used to bind a component value to be used at a later
stage. In addition, it can encapsulate business logic required for processing.
− Page Navigation. Almost all Web applications have multiple pages that the user
can navigate from one to another. All MVC-based design models use a servlet as
the Controller part. This servlet also acts as the sole entry point to the application.
Which page to be displayed after the current request is determined by the value of
a specified request parameter. Managing page navigation is critically important.

3 Web Application Design Models

The Model 2 design model is based on the Model-View-Controller (MVC) design


pattern. As explained by Burbeck [1], there are three main modules in MVC, the
Controller, the View, and the Model. The Controller acts as the central entry point to
the application. All user interactions go through this controller. The View contains the
presentation part of the application, and the Model stores data or encapsulates
business logic of the application. In the later development, the Struts Framework
provides a common framework to easily build Model 2 applications. Then, the last
initiative is the JavaServer Faces, which also employs the MVC design pattern.
In the following sections, we discuss these three design models and explain how
each design model addresses the development issues specified in the previous section.

3.1 Model 2

A Java Web application that is based on the Model 2 design model has one servlet
(called the Controller servlet) that serves as the Controller part. All requests are first
handled by this servlet, which immediately dispatches the requests to the appropriate
views using RequestDispatcher objects. Views in the Model 2 design model are
represented by JSP pages. To store data, a Model 2 application uses JavaBeans, which
are the Model part of the application. In addition to storing data, the JavaBeans also
encapsulate business logic. Each HTTP request carries an action parameter that
indicates which view to dispatch this request to. The programmer must code the
HTML tags for user interface in all JSP pages in the application and write input
validation code. In addition, the model objects are managed by individual JSP pages.

3.2 Struts

The Struts Framework is an improvement of the Model 2 design model. It provides a


default Controller servlet so that the user does not have to write and compile one.
Struts alleviates the task of page navigation by allowing navigation rules to be present
in its application configuration file (an XML document). Changes to the navigation
rules do not require recompilation of a Java servlet class. In addition to easier page
navigation, Struts provides custom tag libraries that define tags representing HTML
elements. One of these tags is used for error handling and Struts is therefore capable
714 B. Kurniawan and J. Xue

of displaying localized error messages in support for internationalization. Struts


applications use JavaBeans as their models, just like the Model 2 design model. In
addition, Struts programmers have to write their own input validation code.

3.3 JSF

JSF also employs a controller servlet that is called FacesServlet. This servlet is the
only entry point to a JSF application. JSF also uses JSP pages as its views and
JavaBeans as its model objects. Unlike Model 2 and Struts, however, JSF provides
ready-to-use user interface components that can be written on JSP pages. Upon an
invocation of a page of a JSF application, the FacesServlet constructs a component
tree that represents the JSP page being requested. Some of the components can also
trigger events, making JSF event-driven. For page navigation, JSF uses an approach
similar to Struts, i.e., by allowing navigation rules to be defined in an application
configuration file (again, an XML document).
What distinguishes a JSF application from non-JSF servlet/JSP application is that
JSF applications are event-driven. The user interface of a JSF application is one or
many JSP pages that host Web components such as forms and input boxes. These
components are represented by JSF custom tags and can hold data. A component can
be nested inside another, and it is possible to draw a tree of components. Just as in
normal servlet/JSP applications, you use JavaBeans to store the data the user entered.

4 Experimental Setup

The software and hardware details for our experiments are described below.

4.1 The Online Store Application

The online store application in this research comes in three versions: Model 2, Struts,
and JSF. All of them are named BuyDirect, an online store that sells electronics
goods. The application has the following features:
- Search for certain products based on product names or descriptions.
- Browse the list of products by category.
- View a product's details
- Put a product into the shopping cart.
- View the shopping cart
- Check out and place an order.

This application represents the most common Web application that provides the
following functionality:
- searching for certain information in the database
- browsing the data in the database,
- performing database transactions.
Data is stored in a MySQL database. The tables used and the relationship among
them are depicted in Figure 1.
A Comparative Study of Web Application Design Models 715

Fig. 1. The tables and relationships among them

4.2 The Servlet Container

A Java Web application runs in a servlet container, which is the engine that processes
the incoming HTTP requests for the resources in the application. For this research
project, we use Tomcat, an open source servlet container from the Apache Software
Foundation. The version we use is 5.02 [11].
Basically, a servlet container processes a servlet by performing the following tasks:
- Creating the HttpRequest Object
- Creating the HttpResponse Object
- Calling the service method of the Servlet interface, passing the HttpRequest and
HttpResponse objects.

4.3 Testing Clients

For performance testing, we emulate multiple users using JMeter 1.9 [9], also from
the Apache Software Foundation. JMeter allows the user to choose the number of
threads to perform testing. Each thread emulates a different user. JMeter also lets us
choose how many times a test will be done. To test a Web application using JMeter,
you direct requests to certain IP address, context path, and port number. You can also
specify request parameters to be included in each HTTP request. As the output,
JMeter notifies the response time of the server in milliseconds for a test. From the
response time, we derive the number of hits/seconds the server is capable of serving.

4.4 Hardware

We use different computers for running the applications and for testing, so as to
obtain maximum performance measurement accuracy. The computer running the
application is a Linux machine having the following hardware specifications: Intel
Pentium III 750MHz CPU with 256MB RAM. The computer running the testing
clients is a Windows 2000 machine running JMeter. The computer has the following
specifications: Intel Pentium III 850MHz CPU with 256MB RAM.
716 B. Kurniawan and J. Xue

5 Experimental Results

We obtain experimental results in two categories: the ease of development and


performance. The ease of development category compares the number of classes and
the number of lines of code. These numbers indicate how easy it is to develop an
application by following a certain design model. An application with the fewer
number of classes or the number of lines of code indicates that the application is
relatively easier to build. The application with the more number of classes indicates
that the application takes more time to develop.
The performance measurement results are obtained by comparing three operations
in each version of the online store application: Search, Browse, and Shopping. The
Search operation is the most common operation in such an application. The Browse
operation displays products by category, and the Shopping operation is the most
complex operation of all. It includes filling in the Order form and inserting products
in the shopping cart to the database. The database is locked during the product
insertion, so either all shopping items are stored in the database or none of them is.

5.1 Ease of Application Development

As Table 1 shows, it takes the most effort to implement the Model 2 design model.
Using Struts alleviates the problem a bit, and the best saving in the development
comes if one uses JSF.

Table 1. The number of classes and the number of lines for the applications under study

Model 2 Struts JSF


Servlet #Classes 1 0 0
#Lines 74 0 0
Bean #Classes 9 9 9
#Lines 348 348 348
JSP #Classes 9 9 9
#Lines 809 733 534
Others #Classes 12 10 3
#Lines 590 430 271
Total #Classes 31 28 21
#Lines 1821 1511 1153

The Model 2 design model is characterised by the presence of a Controller servlet


and a number of JavaBeans classes (as the Model) and JSP pages (as the Views). The
Controller servlet is responsible for page navigation rules that employ a series of if
statements. Model 2 application programmers must also code for the input validation
that in this research is implemented inside a number of custom tag libraries. The other
classes in the Model 2 design model are custom tag library and the tag library
descriptors responsible for input validation and data display. In fact, input validation
takes 590 lines of code, or almost 30% of the total amount of code.
In the Struts application, the Controller servlet is provided by the framework,
therefore a Struts programmer saves time for not having to write one. However,
he/she still needs to write page navigation rules in the Application Configuration file,
which is easier than writing a servlet because the Application Configuration file can
A Comparative Study of Web Application Design Models 717

be edited using a text editor and no compilation is necessary. Input validation must
still be done manually, even though the Struts Framework provides an error handling
mechanism. The number of classes and the number of lines of code for input
validation are almost similar to the Model 2 application. In Struts, the other classes
are Action classes to which the default Controller servlet dispatches requests.
In JSF input validation comes free through the availability of validator component.
As a result, a JSF application developer can skip this task. In addition, page
navigation takes the same course as Struts, i.e. by utilising an Application
Configuration file. The other classes in JSF are a ContextListener, an ActionListener,
and a Database utility class.

5.2 Performance Measurement

For each operation, we measure the server response time (in milliseconds) for 1 to 10
concurrent users. The number of users is specified by setting the number of threads in
Jmeter. Each test is conducted 10 times and the average is taken. Each operation is
discussed further is the following sub-sections.

5.2.1 Search Operation


The Search operation retrieves all products whose name or description matches the
keyword. There is one SQL SELECT statement performed. Figure 2 compares the
three versions of applications for the Search operation.

Search Operation

1000
Model 2
900
Struts
800 JSF
Server Response Time (ms)

700

600

500

400

300

200

100

0
1 2 3 4 5 6 7 8 9 10
Number of Concurrent Users

Fig. 2. The performance comparison for the Search operation

For the Model 2 application, the average server response time for one user is 173
ms and for 10 users is 919 ms. For the Struts application, these numbers are 189 ms
and 900 ms, respectively. For the application built using JSF, the average server
response time is 210 ms for one user and 932ms for 10 users. The increase of the
response time is proportional to the increase of the number of concurrent users, which
means that the server is still able to cope with the load.
The Model 2 application has the least overhead, therefore the average performance
should be better than the Struts and JSF applications. However, the Struts application
performs as well as the Model 2 application. This is because the server has enough
memory to load all Struts libraries required to run Struts. Also, note that page
navigation rules in Struts are loaded and stored in an object called ActionMapping.
718 B. Kurniawan and J. Xue

Therefore, given an action request parameter, the next page of navigation is obtained
through a look-up. On the other hand, the Model 2 application uses a series of if
statements to find the next page of navigation, given the action request parameter.
The JSF application performs slightly worse than the other applications in almost
all numbers of concurrent users. This could be due to the time taken by the JSF
implementation to construct a component tree for each page requested. However, the
difference in server response time between JSF and other applications is not that
significant.

5.2.2 Browse Operation


The Browse operation retrieves all products belonging to the specified category for
the three versions of applications. Like the Search operation, there is one SQL
SELECT statement performed. Figure 3 gives the test results for this operation.

Browse Operation

1200
Model 2
Server Response Time (ms)

1000 Struts
JSF
800

600

400

200

0
1 2 3 4 5 6 7 8 9 10
Number of Concurrent Users

Fig. 3. The performance comparison for the Browse operation

On average, the Model 2 application performs the best because it has the least
overhead. The average server response time is 111 ms for one user and 899 ms for 10
users. The Struts application has comparable performance, with one user average
server response time of 180 ms and 10 user response time of 920 ms. The JSF lacks a
bit behind the two applications with these numbers being 190 and 1009 ms
respectively.
The increase of the server response time is proportional to the increase of the
number of concurrent users, which means the server is able to serve those users well.
The average performance measurement results of the Browse operation are very
similar to the ones for the Search operation because the database operations of both
operations are also similar.

5.2.3 Shopping Operation


This operation includes a database transaction with an insert into the Orders table and
multiple inserts into the OrderDetails table. The transaction either succeeds or fails as
a whole. Figure 4 shows the test results for this operation.
The Model 2 application results in an average server response time of 230 ms for
one user and 2088 ms for 10 users. The Struts application scores similar results with
238 ms and 2033 ms for both one user and 10 concurrent users. The JSF application
takes an average of 240 ms to server one user and 2227 ms for 10 concurrent users.
A Comparative Study of Web Application Design Models 719

Shopping Operation

2500
Model 2

Server Response Time (ms)


Struts
2000
JSF

1500

1000

500

0
1 2 3 4 5 6 7 8 9 10
Number of Concurrent Users

Fig. 4. The performance comparison for the Shopping operation

Figure 4 shows that in all applications, a linear increase in the number of concurrent
users causes an almost exponential increase in the average server response time. This
is due to the lock in the database during the database transaction that causes
subsequent requests to be queued until the database lock is released.
Performance comparison for the Model 2, Struts, and JSF applications for the
Shopping operation is almost the same as the Search and Browse operations. Model 2
and Struts perform similarly, while the JSF application is worse. However, the
difference between the JSF application and the other two is not significant.

6 Related Work

Wu et al [13] compare the performance of database-based Web applications using


Java servlets, PHP version 3, and Common Gateway Interface (CGI). After a series of
benchmark tests that performs data retrieval from a MySQL database, they find that
the solution of Java servlets with persistent database connection has the best
performance. PHP3 using persistent database connections performs fairly well when
compared to the CGI solution. They also mention the advantages of using Java
servlets. According to these authors. Java servlets are an excellent choice to meet the
requirement of e-commerce (such as online shopping) applications and are able to
handle client requests in a highly interactive mode. However, Wu et al. do not provide
analysis of the architectures of the system they are testing. Nor do they study the ease
of development and ease of maintenance aspects of those technologies.
Cecchet et al [2] conduct similar research, this time comparing PHP 4, Java
servlets, and Enterprise JavaBeans. They measure the performance of these three
architectures using two applications: an online bookstore and an auction site. The
online bookstore stresses the server back-end, whereas the auction site represents an
application with most workload on the server front end. Their study reveals that PHP4
is more efficient than Java servlets, and the EJBs perform even worse than servlets.
However, they note that servlets, being part of the Java solution, provides the
flexibility of being able to be ported to another system with a different operating
system. This research too does not compare design models of the same technology, as
we do. Neither does it offer an insight into the underlying code of the technologies.
720 B. Kurniawan and J. Xue

In a similar study, Cecchet et al [3] evaluate the performance and scalability of


EJB applications using two different open source J2EE containers, JBoss 2.4 [7] and
JOnAS 2.4.4 [9], as well as the performance of the EJB applications with servlet-
based solutions. They find that the servlets-only application they build performs the
best due to the fewer number of layer communications in the server. They find that
JOnAS 2.4.4 outperforms JBoss 2.4 because of the more efficient design of the J2EE
application server. This study is different from ours because it compares the
efficiency of the infrastructure software (the J2EE containers) as opposed to the
design models of the applications.
Also worth mention is the white paper from Sun Microsystems [10] that presents
the functionality comparison of Java servlets, PHP, and CGI.

7 Conclusion

We find that it is most rapid to build Web applications using JSF. Model 2
applications are the least rapid but give the best performance. Struts applications sit in
the middle of the other two design models in both comparisons.
We make some suggestions that could improve the Servlets technology in general
and enhance the performance of applications based on both design models.
− Struts. Struts is not based on any specification and there is no documentation that
discusses its internal working. Therefore, it is hard to know what have been
implemented and what could be improved.
− The Servlets Technology. The Servlet 2.3 Specification does not define any
caching mechanism. There is no mention of caching in the upcoming Servlet 2.4
Specification either. Despite the dynamic nature of the content of a Web
application, some contents do not change very often. For example, the categories
of products that a user can browse in an online store application probably only
change once in a month. If those semi-static contents must be generated from the
database every time they are requested, a lot of programming resources will be
wasted. Servlet programmers get around the absence of caching by writing an
object that caches certain content. However, since there is no standard for caching,
many programmers write the same piece of code again and again.
− Model 2.The main drawback is that the page navigation rules are hard-coded in the
Controller servlet. This means any minor change to the program flow will require
the Controller servlet to be re-compiled. The solution to this problem is to provide
a mapper that reads the page navigation rules when the application starts. The code
could be conveniently written in the init method of the Controller servlet. This
method is only executed once, i.e. the first time the servlet is loaded into memory.
If the properties file needs to be re-read every time it changes, the programmer can
check the timestamp of the properties file for each request, and compares it with
the previous read of this file. If the timestamp is more current than the previous
read, the mapper can be re-constructed. This feature can be enabled and disabled
by using an initial parameter in the Context object. At the development phase, this
feature should be enabled. At deployment, this feature should be off. The use of the
properties file to store the page navigation rules also makes it possible to avoid a
series of if statements in the Controller Servlet, which can be time-consuming for
A Comparative Study of Web Application Design Models 721

every request. Instead, a HashMap can be used, with action request parameters as
keys and the next JSP pages as values. The other disadvantage of this design model
is the absence of standard components for input validation and user interface.
However, this has been solved in JSF.
− JSF. JSF provides solutions to common problems in Web development, such as
page navigation management, UI components and input validators. However,
because this technology is still very young, there are not too many UI components
available, forcing programmers to combine JSF with non-JSF servlets/JSP pages.
JSF is event-driven. JSF programmers determine the behavior of a JSF application
by writing event listeners, just like those listeners in a Swing application. In JSF
version 1.0, there are currently two types of events that can be triggered:
ActionEvent and ValueChangedEvent. However, this is good enough to provide
sufficient level of interactivity between the application and its users. Adding more
types of events will definitely make JSF more appealing.

References

1. Burbeck, S., Applications Programming in Smalltalk-80: How to use Model-View-


Controller (MVC), http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html, 1987.
2. Cecchet, E., Chanda A., Elnikety S., Marguerite J., Zwaenepoel W.: Performance
Comparison of Middleware Architectures for Generating Dynamic Web Content.
th
Proceeding of the 4 International Middelware Conference, 2003.
3. Cecchet, E., Marguerite, J., and Zwaenepoel, W.: Performance and Scalability of EJB
Applications. Proceedings of OOPSLA’02, 2002.
4. Java Servlet 2.3 and JavaServer Pages 1.2 Specification (JSR-053),
http://jcp.org/aboutJava/communityprocess/final/jsr053/.
5. Java Servlet 2.4 Specification (Proposed Final Draft 3),
http://jcp.org/aboutJava/communityprocess/first/jsr154/index3.html.
6. JavaServer Faces Technology, http://java.sun.com/j2ee/javaserverfaces/.
7. JBoss EJB server, http://jboss.org.
8. JMeter, http://jakarta.apache.org/jmeter/.
9. JOnAS: Java Open Application Server, http://www.objectweb.org/jonas.
10. Sun Microsystems, Comparing Methods for Server-Side Dynamic Content,
http://java.sun.com/products/jsp/jspservlet.html, 2000.
11. The Apache Software Foundation, http://www.apache.org.
12. The Struts Framework, http://jakarta.apche.org/struts/.
13. Wu, A., Wang, H., and Wilkins, D.: Performance Comparison of Alternative Solutions for
Web-To-Database Applications. Proceedings of the Southern Conference on Computing,
the University of Southern Mississippi, 2000.
Other documents randomly have
different content
The Project Gutenberg eBook of
Psychologische Typen
This ebook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this ebook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

Title: Psychologische Typen

Author: C. G. Jung

Release date: March 1, 2020 [eBook #61543]


Most recently updated: October 17, 2024

Language: German

*** START OF THE PROJECT GUTENBERG EBOOK


PSYCHOLOGISCHE TYPEN ***
Anmerkungen zur Transkription
Der vorliegende Text wurde anhand der 1921 erschienenen Buchausgabe so weit wie
möglich originalgetreu wiedergegeben. Typographische Fehler wurden stillschweigend
korrigiert. Ungewöhnliche und heute nicht mehr gebräuchliche Schreibweisen sowie
Schreibvarianten bleiben gegenüber dem Original unverändert, sofern der Sinn des Texts
dadurch nicht beeinträchtigt wird.
Das Inhaltsverzeichnis wurde vom Bearbeiter an den Anfang des Texts verschoben.
Auf S. 297 wurde im Original eine Listennummer doppelt vergeben. In der vorliegenden
Ausgabe wurde im Unterpunkt 7. ‚Damit stimmt folgende Stelle trefflich überein: ...‘ die
Nummerierung entfernt, wodurch die korrekte Abfolge der Listenpunkte wiederhergestellt
wurde.
In Kapitel XI, Punkt 20, soll der Begriff ‚Empfinden‘ erklärt werden, welcher in diesem
Abschnitt mit ‚E.‘ abgekürzt werden soll. Im Zusammenhang wird aber klar, dass hier
genau genommen das Wort ‚Empfindung‘ stehen muss. Infolgedessen wurde dies sowohl
in der Überschrift des Unterpunktes als auch im Inhaltsverzeichnis abgeändert. Der Autor
verwendet beide Begriffe als Synonyme.
Gesperrt gedruckter Text in der Buchausgabe wird hier kursiv dargestellt.
Psychologische Typen
Von

C. G. Jung
Dr. med. et jur., vorm. Dozent der
Psychiatrie an der Universität Zürich

Rascher & Cie., Verlag, Zürich, 1921

Erstes und zweites Tausend.

Nachdruck verboten.
Alle Rechte, insbesondere das der Übersetzung, vorbehalten.
Copyright 1921 by Rascher & Cie., Verlag, Zürich.
Buchdruckerei Hans Schatzmann, Horgen-Zürich.
Inhalt.
Einleitung: Seite
Die zwei Mechanismen der Extra-
und der Introversion. Die vier
psychologischen Grundfunktionen:
Denken, Fühlen, Empfinden und
Intuieren 7

I. Das Typenproblem in
der antiken und 17
mittelalterlichen
Geistesgeschichte:
1. Zur Psychologie in der Antike.
Tertullian und Origenes 17
2. Die theologischen Streitigkeiten
der alten Kirche. Homousie und
Homoiusie. Der pelagianische
Streit 33
3. Das Problem der
Transsubstantiation 36
4. Nominalismus und Realismus 40
a) Das Universalienproblem in
der Antike.
b) Das Universalienproblem in
der Scholastik.
c) Der Einigungsversuch des
Abaelard.
5. Der Abendmahlstreit zwischen
Luther und Zwingli 91

II. Über Schillers Ideen 97


zum Typenproblem
1. Die Briefe über die ästhetische
Erziehung des Menschen 97
a) Über die wertvolle und die
minderwertige Funktion. b)
Über die Grundtriebe.
2. Die Abhandlung über naive und
sentimentalische Dichtung 182
a) Die naive Einstellung. b) Die
sentimentalische Einstellung. c)
Der Idealist und der Realist.

III. Das Appollinische und 193


das Dionysische
Nietzsche: Die Geburt der
Tragödie.

IV. Das Typenproblem in 211


der Menschenkenntnis
Furneaux Jordan: Character as
seen in body and parentage.
1. Allgemeines über die
Jordanschen Typen 211
2. Spezielle Darstellung und Kritik
der Jordanschen Typen 219
a) Die introvertierte Frau. b)
Die extravertierte Frau. c) Der
extravertierte Mann. d) Der
introvertierte Mann.

V. Das Typenproblem in 239


der Dichtkunst
Carl Spitteler: Prometheus und
Epimetheus.
1. Einleitendes über die
Spittelerschen Typen 239
2. Vergleichung von Spittelers und
Goethes Prometheus 248
3. Die Bedeutung des
vereinigenden Symbols 269
a) Die brahmanistische
Auffassung des
Gegensatzproblems.
b) Über die brahmanistische
Auffassung des vereinigenden
Symbols.
c) Das vereinigende Symbol als
dynamische Gesetzmässigkeit.
d) Das vereinigende Symbol in
der chinesischen Philosophie.
4. Die Relativität des Symbols 311
a) Frauendienst und
Seelendienst.
b) Die Relativität des
Gottesbegriffes bei Meister
Eckehart.
5. Die Natur des vereinigenden
Symbols bei Spitteler 362
VI. Das Typenproblem in 383
der Psychiatrie
Gross: Die zerebrale
Sekundärfunktion.

VII. Das Problem der


Typischen Einstellungen 407
in der Ästhetik
Worringer: Abstraktion und
Einfühlung.

VIII. Das Typenproblem in


der modernen 425
Philosophie
1. Die James’schen Typen. 2. Die
charakteristischen Gegensatzpaare
der James’schen Typen. 3. Zur
Kritik der James’schen Auffassung.

IX. Das Typenproblem in 459


der Biographik
Ostwald: Grosse Männer.

X. Allgemeine 473
Beschreibung der Typen
A. Einleitung.
B. Der extravertierte Typus. 477
I. Die allgemeine Einstellung des
Bewusstseins 478
II. Die Einstellung des
Unbewussten 483
III. Die Besonderheiten der
psychologischen
Grundfunktionen in der
extravertierten Einstellung 490
1. Das Denken. 2. Der
extravertierte Denktypus. 3.
Das Fühlen. 4. Der
extravertierte Fühltypus. 5.
Zusammenfassung der
rationalen Typen. 6. Das
Empfinden. 7. Der
extravertierte
Empfindungstypus. 8. Die
Intuition. 9. Der extravertierte
intuitive Typus. 10.
Zusammenfassung der
irrationalen Typen.
C. Der introvertierte Typus. 535
I. Die allgemeine Einstellung des
Bewusstseins 535
II. Die unbewusste Einstellung 542
III. Die Besonderheiten der
psychologischen
Grundfunktionen in der
introvertierten Einstellung 545
1. Das Denken. 2. Der
introvertierte Denktypus. 3.
Das Fühlen. 4. Der
introvertierte Fühltypus. 5.
Zusammenfassung der
rationalen Typen. 6. Das
Empfinden. 7. Der introvertierte
Empfindungstypus. 8. Die
Intuition. 9. Der introvertierte
intuitive Typus. 10.
Zusammenfassung der
irrationalen Typen. 11.
Hauptfunktion und
Hilfsfunktion.

XI. Definitionen 587


Begriffliche Umschreibung von
58 psychologischen
Ausdrücken: 1. Abstraktion. 2.
Affektivität. 3. Affekt. 4.
Apperception. 5. Archaïsmus.
6. Assimilation. 7. Bewusstsein.
8. Bild. 9. Collektiv. 10.
Compensation. 11.
Concretismus. 12. Construktiv.
13. Denken. 14.
Differenzierung. 15.
Dissimilation. 16. Einfühlung.
17. Einstellung. 18.
Enantiodromie. 19. Emotion.
20. Empfindung. 21.
Extraversion. 22. Fühlen. 23.
Funktion. 24. Gedanke. 25.
Gefühl. 26. Ich. 27. Idee. 28.
Identifikation. 29. Identität. 30.
Individualität. 31.
Individuation. 32. Individuum.
33. Intellekt. 34. Introjektion.
35. Introversion. 36. Intuition.
37. Irrational. 38. Libido. 39.
Machtcomplex. 40.
Minderwertige Funktion. 41.
Objektstufe. 42. Orientierung.
43. „Participation mystique“.
44. Phantasie. 45. Projektion.
46. Rational. 47. Reduktiv. 48.
Seele. 49. Seelenbild. 50.
Selbst. 51. Subjektstufe. 52.
Symbol. 53. Synthetisch. 54.
Transscendente Funktion. 55.
Trieb. 56. Typus. 57.
Unbewusst. 58. Wille.

Schlusswort 693
Vorrede.
Dies Buch ist die Frucht einer beinahe zwanzigjährigen Arbeit im
Gebiete der praktischen Psychologie. Es ist gedanklich allmählich
entstanden, einmal aus unzähligen Eindrücken und Erfahrungen der
psychiatrischen und nervenärztlichen Praxis sowohl, wie des
Umganges mit Menschen aller sozialen Schichten, sodann aus
meiner persönlichen Auseinandersetzung mit Freund und Feind, und
schliesslich aus der Kritik der psychologischen Eigenart meiner
selbst. Ich habe mir vorgenommen, den Leser nicht mit Kasuistik zu
beschweren, dagegen lag es mir daran, meine aus der Erfahrung
abstrahierten Gedanken historisch sowohl wie terminologisch der
bereits vorhandenen Erkenntnis anzugliedern. Ich habe dieses
Unternehmen weniger aus einem Bedürfnis historischer
Gerechtigkeit durchgeführt, als vielmehr in der Absicht, die
Erfahrungen des ärztlichen Spezialisten aus dem engen Fachgebiete
in allgemeinere Zusammenhänge zu bringen; in Zusammenhänge,
welche es auch dem gebildeten Laien ermöglichen, sich die
Erfahrungen eines Spezialgebietes zu nutze zu machen. Ich hätte
diese Angliederung, die man leicht als einen Eingriff in andere
Gebiete missverstehen könnte, niemals gewagt, wenn ich nicht der
Überzeugung wäre, dass die in diesem Buche dargestellten
psychologischen Gesichtspunkte von allgemeiner Bedeutung und
Anwendbarkeit sind, und darum auch besser in einem allgemeinen
Zusammenhang abgehandelt, als in der Form einer
fachwissenschaftlichen Hypothese belassen werden. Dieser meiner
Absicht entsprechend habe ich mich darauf beschränkt, mich mit den
Ideen einzelner Bearbeiter des vorliegenden Problems
auseinanderzusetzen, und habe darauf verzichtet, alles zu erwähnen,
was überhaupt schon zu unserer Frage gesagt wurde. Ganz
abgesehen davon, dass es meine Kraft um ein Vielfaches überstiege,
eine auch nur annähernde Vollständigkeit eines solchen
Verzeichnisses von einschlägigen Materialien und Meinungen zu
erreichen, trüge eine solche Sammlung auch gar nichts Gründliches
bei zur Erörterung und Entwicklung des Problems. Ich habe darum
vieles, was ich mir im Laufe der Jahre gesammelt habe, ohne
Bedauern weggelassen und mich möglichst auf die Hauptsachen
beschränkt. Diesem Verzicht ist auch ein wertvolles Dokument, das
mir sehr viele Hilfe gewährte, zum Opfer gefallen. Dies ist ein
umfangreicher Briefwechsel mit meinem Freunde, Herrn Dr. med. H.
Schmid in Basel, den ich mit ihm über die Typenfrage gepflogen
habe. Ich verdanke diesem Meinungsaustausch sehr viel Klärung,
und vieles daraus ist auch in allerdings veränderter und mehrfach
überarbeiteter Form in mein Buch übergegangen. Im wesentlichen
gehört dieser Briefwechsel zu den Vorarbeiten, deren Mitteilung
mehr Verwirrung als Klarheit erzeugen würde. Ich bin es aber den
Bemühungen meines Freundes schuldig, ihm an dieser Stelle meinen
Dank auszusprechen.
Küsnacht-Zürich.
Im Frühling 1920.

Dr. C. G. Jung.
Einleitung.
Plato und Aristoteles! Das sind nicht bloss die zwei Systeme, sondern
auch die Typen zweier verschiedener Menschennaturen, die sich seit
undenklicher Zeit, unter allen Kostümen, mehr oder minder feindselig
entgegenstehen. Vorzüglich das ganze Mittelalter hindurch, bis auf den
heutigen Tag, wurde solchermassen gekämpft, und dieser Kampf ist der
wesentlichste Inhalt der christlichen Kirchengeschichte. Von Plato und
Aristoteles ist immer die Rede, wenn auch unter anderm Namen.
Schwärmerische, mystische, platonische Naturen offenbaren aus den
Abgründen ihres Gemütes die christlichen Ideen und die entsprechenden
Symbole. Praktische, ordnende, aristotelische Naturen bauen aus diesen
Ideen und Symbolen ein festes System, eine Dogmatik und einen Kultus.
Die Kirche umschliesst endlich beide Naturen, wovon die einen sich
meistens im Klerus und die andern im Mönchstum verschanzen, aber sich
unablässig befehden.
(H. Heine: Deutschland, I.)

Bei meiner praktischen ärztlichen Arbeit mit nervösen Patienten


ist mir schon lange aufgefallen, dass es neben den vielen
individuellen Verschiedenheiten der menschlichen Psychologie auch
typische Unterschiede gibt, und zwar fielen mir zunächst zwei Typen
auf, die ich als Introversions- und Extraversionstypus bezeichnete.
Wenn wir einen menschlichen Lebensverlauf betrachten, so
sehen wir, wie die Schicksale des einen mehr bedingt sind durch die
Objekte seiner Interessen, während die Schicksale eines andern
mehr durch sein eigenes Inneres, durch sein Subjekt bedingt sind.
Da wir nun alle etwas mehr nach dieser oder jener Seite abweichen,
so sind wir natürlicherweise geneigt, alles jeweils im Sinne unseres
eigenen Typus zu verstehen.
Ich erwähne diesen Umstand schon hier, um möglichen
Missverständnissen vorzubeugen. Begreiflicherweise erschwert
dieser Umstand den Versuch einer allgemeinen Beschreibung der
Typen beträchtlich. Ich muss beim Leser schon ein grosses
Wohlwollen voraussetzen, wenn ich hoffen will, richtig verstanden zu
werden. Es wäre relativ einfach, wenn jeder Leser von sich wüsste,
zu welcher Kategorie er selber zählt. Es ist aber oft sehr schwierig,
herauszufinden, ob jemand zu diesem oder jenem Typus gehört;
besonders, wenn man selber in Frage kommt. Das Urteil in Bezug
auf die eigene Persönlichkeit ist ja immer ausserordentlich getrübt.
Diese subjektiven Urteilstrübungen sind darum so besonders häufig,
weil jedem ausgesprochenem Typus eine besondere Tendenz zur
Compensation der Einseitigkeit seines Typus innewohnt, eine
Tendenz, die biologisch zweckmässig ist, da sie das seelische
Gleichgewicht zu erhalten strebt. Durch die Compensation entstehen
sekundäre Charaktere oder Typen, welche ein äusserst schwierig zu
enträtselndes Bild darbieten, so schwierig, dass man selbst geneigt
ist, die Existenz der Typen überhaupt zu leugnen und nur noch an
individuelle Verschiedenheiten zu glauben.
Ich muss diese Schwierigkeiten hervorheben, um eine gewisse
Eigentümlichkeit meiner spätern Darstellung zu rechtfertigen: Es
möchte nämlich scheinen, als ob der einfachste Weg der wäre, zwei
concrete Fälle zu beschreiben und zergliedert nebeneinander zu
stellen. Jeder Mensch aber besitzt beide Mechanismen, der
Extraversion sowohl, wie der Introversion, und nur das relative
Überwiegen des einen oder andern macht den Typus aus. Man
müsste daher schon stark retouchieren, um das nötige Relief in das
Bild zu bringen, was auf einen mehr oder weniger frommen Betrug
hinausliefe. Dazu kommt, dass die psychologische Reaktion eines
Menschen ein dermassen kompliziertes Ding ist, dass meine
Darstellungsfähigkeit wohl kaum hinreichen würde, um ein absolut
richtiges Bild davon zu geben. Ich muss mich daher
notgedrungenerweise darauf beschränken, die Prinzipien
darzustellen, die ich aus der Fülle der beobachteten Einzeltatsachen
abstrahiert habe. Es handelt sich dabei um keine Deductio a priori,
wie es etwa den Anschein haben könnte, sondern um eine deduktive
Darstellung empirisch gewonnener Einsichten. Diese Einsichten sind,
wie ich hoffe, ein klärender Beitrag zu einem Dilemma, das nicht nur
in der analytischen Psychologie, sondern auch in andern
Wissenschaftsgebieten und ganz besonders auch in den persönlichen
Beziehungen der Menschen untereinander zu Missverständnis und
Zwiespalt geführt hat und immer noch führt. Daraus erklärt sich,
warum die Existenz von zwei verschiedenen Typen eine eigentlich
schon längst bekannte Tatsache ist, die in dieser oder jener Form,
sei es dem Menschenkenner, sei es der grübelnden Reflexion des
Denkers, aufgefallen ist, oder der Intuition Goethes z. B. als das
umfassende Prinzip der Systole und Diastole sich dargestellt hat. Die
Namen und Begriffe, unter denen der Mechanismus der Introversion
und der Extraversion gefasst wurde, sind recht verschieden und
jeweils dem Standpunkt des individuellen Beobachters angepasst.
Trotz der Verschiedenheit der Formulierungen leuchtet immer wieder
das Gemeinsame in der Grundauffassung hervor, nämlich eine
Bewegung des Interesses auf das Objekt hin in dem einen Falle, und
eine Bewegung des Interesses vom Objekt weg zum Subjekt und zu
dessen eigenen psychologischen Vorgängen im andern Falle. Im
erstern Falle wirkt das Objekt wie ein Magnet auf die Tendenzen des
Subjekts, es zieht sie an und bedingt das Subjekt in hohem Masse,
ja, es entfremdet sogar das Subjekt sich selber und verändert
dessen Qualitäten im Sinne einer Angleichung an das Objekt so sehr,
dass man meinen könnte, das Objekt sei von höherm und in letzter
Linie von ausschlaggebender Bedeutung für das Subjekt, und als sei
es gewissermassen eine absolute Bestimmung und ein besonderer
Sinn von Leben und Schicksal, dass das Subjekt sich ganz ans Objekt
aufgebe. Im letztern Falle dagegen ist und bleibt das Subjekt das
Zentrum aller Interessen. Man könnte sagen, es scheine, als ob in
letzter Linie alle Lebensenergie das Subjekt suche und darum stets
verhindere, dass das Objekt einen irgendwie übermächtigen Einfluss
erhalte. Es scheint, als ob die Energie vom Objekt wegfliesse, als ob
das Subjekt der Magnet sei, der das Objekt an sich ziehen wolle.
Es ist nicht leicht, dieses gegensätzliche Verhalten zum Objekt in
einer leicht fasslichen und klaren Weise zu charakterisieren, und die
Gefahr ist gross, zu ganz paradoxen Formulierungen zu gelangen,
welche mehr Verwirrung als Klarheit stiften. Ganz allgemein könnte
man den introvertierten Standpunkt als denjenigen bezeichnen, der
unter allen Umständen das Ich und den subjektiven psychologischen
Vorgang dem Objekt und dem objektiven Vorgang überzuordnen
oder doch wenigstens dem Objekt gegenüber zu behaupten sucht.
Diese Einstellung gibt daher dem Subjekt einen höhern Wert als dem
Objekt. Dementsprechend steht das Objekt immer auf einem tiefern
Wertniveau, es hat sekundäre Bedeutung, ja, es steht gelegentlich
nur als das äussere, objektive Zeichen eines subjektiven Inhaltes,
etwa als Verkörperung einer Idee, wobei aber die Idee das
Wesentliche ist; oder es ist der Gegenstand eines Gefühls, wobei
aber das Gefühlserlebnis die Hauptsache ist und nicht das Objekt in
seiner realen Individualität. Der extravertierte Standpunkt dagegen
ordnet das Subjekt dem Objekt unter, wobei dem Objekt der
überragende Wert zukommt. Das Subjekt hat stets sekundäre
Bedeutung; der subjektive Vorgang erscheint bisweilen bloss als
störendes oder überflüssiges Anhängsel objektiver Geschehnisse. Es
ist klar, dass die Psychologie, die aus diesen gegensätzlichen
Standpunkten hervorgeht, in zwei total verschiedene Orientierungen
zerfallen muss. Der eine sieht alles unter dem Gesichtswinkel seiner
Auffassung, der andere unter dem des objektiven Geschehens.
Diese gegensätzlichen Einstellungen sind zunächst nichts anderes
als gegensätzliche Mechanismen: ein diastolisches Herausgehen an
und ein Ergreifen des Objektes und ein systolisches Konzentrieren
und Loslösen der Energie von den ergriffenen Objekten. Jeder
Mensch besitzt beide Mechanismen als Ausdruck seines natürlichen
Lebensrhythmus, den Goethe wohl nicht zufällig mit den
physiologischen Begriffen der Herztätigkeit bezeichnet hat. Eine
rhythmische Abwechslung beider psychischen Tätigkeitsformen
dürfte dem normalen Lebensverlauf entsprechen. Die komplizierten
äusseren Bedingungen, unter denen wir leben, sowohl, wie die
vielleicht noch komplizierteren Bedingungen unserer individuellen
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookball.com

You might also like