jcvandan
jcvandan

Reputation: 14314

Java package / class library convention?

I am a C# developer and I am messing around with Java. In C# I would normally have my front end project and then when I need to add another layer to the project (i.e service layer etc) I would add a class library in the solution and add a reference to it.

What is the convention in Java? Do you add another Java project to the workspace and then reference the project? Or do you add a package to the project which contains your front end?

UPDATE

Sorry, I am using eclipse...hence the reference to 'workspace'

Upvotes: 0

Views: 990

Answers (8)

KevinY
KevinY

Reputation: 23

I suggest you can use netbeans then you can create a java class library,when you deploy your project,netbeans will generate jar files for you,and place them at the right location.I'm also a ms developer,hope it helps

Upvotes: 0

Mansoor Siddiqui
Mansoor Siddiqui

Reputation: 21663

Unlike most things in Java, there's no real convention defined for how to split up project.

In my experience, it makes sense to include code that serves a particular business purpose in a single project, and to separate out code that you intend to share between multiple projects, or code that is not specific to a particular business purpose (e.g. database access, JMS libraries, etc.), into a separate project.

Upvotes: 1

jFrenetic
jFrenetic

Reputation: 5542

If you're working in Eclipse follow these steps:

1) Right-click the project and choose "Build Path"-"Configure Build Path..."

enter image description here

2) Switch to Libraries tab and click Add External JARs (or just Add JARs if they're already in the workspace).

enter image description here

3) Now you can either manually add import of the corresponding class, or just hit Ctrl+Shift+O (Source-Organize Imports) and Eclipse will do the job for you.

Upvotes: 0

Michael
Michael

Reputation: 35341

Yes, I guess I would create a separate package. So your UI code might be in com.mycompany.app.ui, your service code in com.mycompany.app.service, etc. However you want to organize your classes is up to you. Java itself doesn't care what packages the classes are in. The packages just help to make the code more manageable for the developers.

Upvotes: 1

hvgotcodes
hvgotcodes

Reputation: 120198

You are assuming everyone works with eclipse, it seems (your references to "workspace").

You can do anything you want, but keep in mind others might not be able to include 'separate' projects for various components of the application.

You can easily address that issue by using some build tool (ant, maven) to build appropriate jars for the various app components, like data-model, persistence, API, etc.

If you front-end is an RIA, might make more sense to develop it as a separate project, although not necessary. If your app is some sort of Java driven UI, you can still do whatever you want, in both cases make sure the UI components have their own package hierarchy.

Upvotes: 1

Matthias Wuttke
Matthias Wuttke

Reputation: 2032

How to divide your source code depends a lot on the structure of your project. It is important to pay attention to a good code organization. You should keep classes for a common task or for a distinct application layer in own packages. You should watch for inter-package dependencies.

Using different "projects" (be it Maven or Eclipse projects) helps ensuring that you (your developers) do not violate structural boundaries because the compiler checks the dependencies (one project references the other project, like in C#/VS). Maven generates a build artifact (e.g. a JAR file) for every project.

To summarize, I think it is a good idea to create new individual projects for each program module in order to be able to manage the dependencies between the projects explicitly.

Upvotes: 1

duffymo
duffymo

Reputation: 308763

If the UI and the server layer are being developed in a single project, which means packaged and deployed in the same WAR file, I'd create a new package for the service and add classes and interfaces as needed.

If the service layer is deployed separately, I'd add dependencies as a JAR to the web project. All I should need are clients for the service.

Upvotes: 0

Dave Newton
Dave Newton

Reputation: 160191

There's no real convention. When you say "workspace" you're not referring to Java, but rather a development environment (sounds like Eclipse). There are a number of ways to do it; you could do it the way you're suggesting, you could include the dependency via Maven, you could combine them all together in one project, etc.

Which to choose depends on your needs, who else will be consuming either the individual libraries or the completed project, and so on.

Upvotes: 2

Related Questions