forked from fedora-java/howto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
introduction.txt
50 lines (40 loc) · 2.24 KB
/
introduction.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Clean Java packaging has historically been a daunting task. Lack of
any standard addressing the physical location of files on the system
combined with the common use of licensing terms that only allow free
redistribution of key components as a part of a greater ensemble has
let to the systematic release of self-sufficient applications with
built-in copies of external components.
As a consequence applications are only tested with the versions of the
components they bundle, a complete Java system suffers from endless
duplication of the same modules, and integrating multiple parts can be
a nightmare since they are bound to depend on the same elements - only
with different and subtly incompatible versions (different
requirements, different bugs). Any security or compatibility upgrade
must be performed for each of those duplicated elements.
This problem is compounded by the current practice of folding
extensions in the JVM itself after a while; an element that
could safely be embedded in a application will suddenly conflict with
a JVM part and cause subtle failures.
It is not surprising then that complex Java systems tend to fossilize
very quickly, with the cost of maintaining dependencies current
growing too high so fast people basically give up on it.
This situation is incompatible with typical fast-evolving Linux
platform. To attain the aim of user- and administrator-friendly RPM
packaging of Java applications a custom infrastructure and strict
packaging rules had to be evolved.
=== Basic introduction to packaging, reasons, problems, rationale
This section includes basic introduction to Java packaging world to people
coming from different backgrounds. Goal is to understand language of all groups
involved. If you are a Java developer coming into contact with RPM packaging for
the first time start reading xref:XFor_Devs[Java developer] section. On the
other hand if you are coming from RPM packaging background an
xref:XFor_Packagers[introduction to Java world] is probably a better starting
point.
It should be noted that especially in this section we might sacrifice
correctness for simplicity.
[[XFor_Packagers]]
=== For Packagers
include::introduction_for_packagers.txt[]
[[XFor_Devs]]
=== For Java Developers
include::introduction_for_developers.txt[]