Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Mar 2002 15:58:33 +0800
From:      Yong-Jhen Hong <winard@ms11.url.com.tw>
To:        ports@FreeBSD.org
Subject:   abount bsd.java.mk
Message-ID:  <20020310075833.GA8812@winax.home>

next in thread | raw e-mail | index | archive | help

--GRPZ8SYKNexpdSJ7
Content-Type: multipart/mixed; boundary="Qxx1br4bt0+wmkIi"
Content-Disposition: inline


--Qxx1br4bt0+wmkIi
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hello!

It's nice to see the Ernst's working on bsd.java.mk, I think it is a
very need for serious Java developers and system administrators. I want
to make some comment about it.

I'm just making a Apache XML Cocoon2 port, wondering why that is so
uneasy to make such a Java-based port unlike a C/C++ version. To me
there are several reasons: a JDK contains many things (virtual machine,
bytecode compiler, javadoc, javah, jar, rmi*, sources and several class
libraries), a port needs to figure out which part it depends on to
build, install, or run; second, there is no common agreement on how
should a class library, a piece of javadocs, and any other documents,
property files, be installed, which makes it hard for installing and
checking which is already existing on the system.

=46rom my point of view, Java class libraries is best used like shared
libraries, and keeped in uncompressed form under a common directory, for
example, ${PREFIX}/lib/java. This approach makes it easier to check if
a library API exists, and possibly we can have such checking rule in a
port Makefile:

	CLASS_DEPENDS=3D \
	org.apache.xerces.parsers.DOMParser:${PORTSDIR}/textproc/xerces-j

and such installation macros:

	do-install:
		${INSTALL_JAR} ${INSTALL_WRKSRC}/build/batik-libs.jar
or
	do-install:
		${INSTALL_CLASSES} ${INSTALL_WRKSRC}/build/classes

The drawback is a common API might be implemented by several packages,
an experienced administrator may want to use different implementations
for different applications. And if a package implement several APIs, for
example Xalan implement XSLT in DOM2, SAX2, and TrAX, then a after-
installed pacakge would override a before-installed because of the lack
of some API implementations in the before-installed package. This can be
solved by dividing such port into sub ports and a meta port, which needs
much cares. But it even make it a much easier life for developers, for
they don't need to maintain a long list of class paths.

Javadocs is the same. I think it can be maintained like GNU Info
documents, which means we have just one ${PREFIX}/javadoc, and a javadoc
instruction is activated during installtion to merge package API
docments into the common javadoc tree. All other documents can be
installed following the current convention in ${PREFIX}/share/doc.

Even JDK can be installed in such way (in ${PREFIX}/bin, lib/java,
share, man, javadoc), the problem is still on how to handle different
implementations. For class libraries, a possible solution is a
specialized configurable class loader, but which is not the port system
can handle.

Yong-Jhen Hong
<mailto:winard@ms11.url.com.tw/>

--Qxx1br4bt0+wmkIi
Content-Type: application/pgp-keys
Content-Description: PGP =?big5?B?xl+wzSAweEIzRkZBNUI5oUM=?=
Content-Disposition: attachment
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDw12agRBACCXCcQe/FIy15HO9bI77ICKwEqpcQAmkUFWB3lGztMvmCCKB4b
mZf8XGGvLmR3OwnPOxkiPZ4gYckWmTyBUh4QNThyVCzrzrazeKj31yoNZf41fZYR
yrQebzoJExT26vtKaOuZS4VUK+rHQUW6bwALUss9VSlE3o+ppAADcFM+2wCgzONY
/bLyjpWzRifye/seyHcEOYED/RxW6J6OCZH8av46G+Fg8em3Hybc9GzAHzOIBJ5C
lcom/7RodHg0e7Cfa6zHHi+6JFafSTegJcfXg0zejlFgbfNb5cAlPfiCaDYuKOZc
NF91Uxf+ShD3TMFbTGqdhwMlwvRO5yYwTbBR6mmv5TxdYc6g4XXz9lutJx7CqpZl
sofuA/oDoG86S74GAzywlmysJmCxPrtdtHLsqNZe5YV1DFIy07f9KL8FDIBYuh2D
lDLT7GFAIuybmIdoHT6NmgflERohRexBa6pO4K2I5jcBSY0jl5iteV3GGtAc9OCQ
3m9bkdgM9nOr4dMsVZZIby/DHTplwHOiHHd1fuFpPu+bnZLVWrQnWW9uZy1KaGVu
IEhvbmcgPHdpbmFyZEBtczExLnVybC5jb20udHc+iFcEExECABcFAjw12agFCwcK
AwQDFQMCAxYCAQIXgAAKCRAxzMHys/+luRv1AJ9b3UwA7sW0GC/Kw7RsjcPf4a8K
uQCeJLo9bXv6FGY4P7XnhnuSwqvL6R65Ag0EPDXarhAIAPcyL4yfWxlCY+qtGIe8
X5GKOpbhKEJRHq0K8ciZfuemYsgxyBcauSeur42MZ+EoQx5I0B5L/nqmSmQq//d2
tcVMs8kn//mG7fmonUfL8/LmnAX2sh8X0HfvZ08AKHSrX8oBMKHUDnEY3jvC27e4
2/evd6O+Fi1YXj0lWp+3yAt5Q3gkOEglsGgshE8fVekh7NOSwAQUbCv/STIwQPSL
zcdQ4+UYxQK9YaSqRsz5GcRP5j/Dh+ec33yZFPrjUiJLsXieR0gDIxlbNbdHmlEi
zMs7poh4hrDQR0br/4eG4fDSxVUnyWhSL1uNiGX1D8z7cQ+/1FPBt/SJK1xlBzDK
rO8ABAsIAJz//I8vIKOZPMGd5o5rT8Ms0s/PlkRUnrAeivSaYOef1hZazVSS0TH9
3FXTguUQDGkT3tVZZf9dMqFtvDnB41JJEGbqdqwjdoAvVq2SXhXcv3Sctvd4aEWb
FHPd97fMjdOFtd/lboZGLM+klCwDciGbgQ8u/Zaco5veyhIZSOgxDe6qqa+hj0x8
OjhrjXBkxHkhJ2OmIdvRs0Xj9Kc9B4hR/7mGeUNgo5l8EVQCymCyRu5OOGiaL/pn
x66Zfdly6t1S3VNn/Og0YtLkIMD6juPcSSvZsgFpVqu0slQ9KdTPckZSSRWlaIJa
QvgKAVQDuwSGvyuBoiu2ueBJGNLTnNSIRgQYEQIABgUCPDXargAKCRAxzMHys/+l
ucnnAKCjpMaxsS/G7xwY4Bbq43D87b7JDgCffAhOytGyjenMdJMfEzpgZhJDtwQ=3D
=3DJGJX
-----END PGP PUBLIC KEY BLOCK-----

--Qxx1br4bt0+wmkIi--

--GRPZ8SYKNexpdSJ7
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

iD8DBQE8ixIoMczB8rP/pbkRAjkCAJ9i/4TSNC+lX0ObC8+1XvrVgvp23ACgwhnf
Vd8Tg6xwgSXFBuXkBtYBrFI=
=oQ7O
-----END PGP SIGNATURE-----

--GRPZ8SYKNexpdSJ7--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020310075833.GA8812>