Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Aug 2002 05:06:44 -0400
From:      Dylan Carlson <absinthe@pobox.com>
To:        Calvin Varney <calvin@varney.org>
Cc:        freebsd-java@FreeBSD.ORG
Subject:   Re: Please review: new Java Project docs
Message-ID:  <200208190506.44212.absinthe@pobox.com>
In-Reply-To: <863ctbrcng.fsf@ubana.varney2.org>
References:  <200208170958.14422.absinthe@pobox.com> <863ctbrcng.fsf@ubana.varney2.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 18 August 2002 07:05pm, Calvin Varney wrote:
> Although you haven't asked for feedback on the documentation section
> I'd like to comment on "4.4. Proposal for Porting Java Applications
> and Tools"

This is great, thank you.

>
> 1. If JAVALIBNAME is defined as ${PORTNAME}-${PORTVERSION} a symlink
>    for ${PORTNAME} would be useful for managing dependencies.

I think that should be up to the user to decide which version they want to use 
(if they have more than one installed).   Either way, that still doesn't mean 
anything if $CLASSPATH isn't set correctly.  

I don't think we should make any assumptions about which versions should be 
symlinked.

>
> 2. Why should Javadocs be treated differently from ordinary
>    documentation and placed anywhere other than ${DOCSDIR}? Javadocs
>    are just another form of documentation and should be excluded when
>    installing ports with NOPORTDOCS.

My opinion on this for what it's worth:

The API docs should be bundled with the rest of the JDK/SDK.  I like it when 
the JDK is one tree of binaries and docs.  

Everything else should be in $DOCSDIR, though.

Agree with you on NOPORTDOCS.  However the API docs, like the SDK source code, 
have to be manually fetched.  Until we have distributables, they probably 
should remain as separate ports (jdk13-doc, etc).   I'm not sure our license 
covers API doc redistribution anyway, so that may never happen.

>
> 3. Regarding placing all library JAR files are in
>    ${JAVAPREFIX}/classes/${JAVALIBNAME}/
>
>    a. Everything java involves classes. As this is a directory for
>       just library classes would "lib" or "import" be a more
>       appropriate directory name?

Not sure how this is relevant.

I wouldn't be opposed to changing ${JAVAPREFIX} to ${PREFIX}/lib/java.
Perl, PHP, Python, Ruby all do it this way, basically.

They like us do not want to mix up C libs with Java libs.  Segregating that 
stuff is a good idea.

>
>    b. Placing each library jar under its own ${JAVALIBNAME} directory
>       will create many subdirectories with just one jar file (or few
>       if different versions are installed). I'd suggest just placing
>       them in ${JAVAPREFIX}/classes (or lib or import...). If a
>       library includes more than one class file and isn't packaged
>       within a jar a ${JAVALIBNAME} subdirectory could be appropriate
>       or they could be jared during installation.

Agree with your first sentence.   Second is sketchy (see above).

Agree with third, and I'd like to suggest that the proposal gets amended to 
require that libraries with multiple classes get built into a JAR file at 
install time.  That's a good idea, because we can do a lot more with 
versioning if all the classes are wrapped up in a JAR.  I'm not sure that any 
of the Makefiles do JAR version checking but if not we should probably work 
in that direction.

Ernst?

>
>    c. Is there a need for ${JAVAPREFIX} at all? Why not install
>       libraries in ${PREFIX}/share/javalib or
>       ${PREFIX}/share/javaimport.

I think it is.  It's cleaner to know where all of your java libraries are, 
instead of having them mixed up with all the C libraries.  Perl operates on 
this same basis.  I don't want to look at a directory and try to figure out 
what is a set of c libs, and what is Java.  ${JAVAPREFIX} solves that.  

>
>       I'm not sure of the intentions behind the additional java in the
>       ${PREFIX}/share/java/classes hierarchy. I don't think
>       ${PREFIX}/share/java is the right place for docs or examples and
>       applications should reside in ${PREFIX}/share or ${PREFIX}. Are
>       any other ports installed under a subdirectory denoting their
>       implementation language?

Perl:   /usr/local/lib/perl5/%interpreter-version%/
PHP:  /usr/local/lib/php/
Python:  /usr/local/lib/python%ver%/
Ruby:  /usr/local/lib/ruby/%interpreter-version%/
...etc...

>
> 4. Is there a need to break away from the existing standard of placing
>    examples in ${EXAMPLESDIR} (default:
>    ${PREFIX}/share/examples/${PORTNAME})?

Nope, no need.  I basically agree with you.  Some other languages actually do 
it this way:  ${PREFIX}/share/exmaples/%lang%/${PORTNAME}

I would suggest:  
${PREFIX}/share/examples/java-${JAVAAPIVERSION}/${PORTNAME}

e.g., /usr/local/share/examples/java13/jakarta-oro/

...

I'd like a few of the committers here (Ernst, Greg primarily) to weigh in on 
these ideas before I amend the existing proposal.   Most of your comments are 
agreeable, though, thank you -- if only a few tweaks are (in my opinion) 
necessary to mimic how other languages handle their ports.

Cheers,
-- 
Dylan Carlson [absinthe@pobox.com]

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




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