It is kinda of hard to say they are independent. They are related I suppose. It is very similar to how java works. You have *.java
and *.class
files where class
files are derived from the java
files.
So the *.jrxml
files is just a text document that contains the actual design of the report, in a more human friendly manner. In order to run the report, JasperReports needs the compiled version of the JRXML
file. The *.jasper
files is the compiled version that is then used to execute the report at runtime.
JasperServer is not a requirement. It depends on what you are trying to do. The reports technically have all the information they need to be compiled and executed. Like my comment on your previous question, it is essentially up to you to get the values for any parameters the report needs and pass them to the JasperReports when executing the report. JasperServer is just a means to this end, and provides a more user friendly GUI front end for doing this.
With out knowing how you intend your reports to be used/accessed by your end users it is difficult to give more direction. But in almost all scenarios you will need to create a screen that prompts the user for the required values of the parameters in the report and pass them to engine.
Now say you wanted to this all dynamically. It is possible in the simplest terms. If the parameters are essentially free form fields (user just type what ever they want), you could use the JasperReports API to get the parameters and their types. Then create the appropriate input field. This obviously falls apart when you want to limit the possible values of a parameter to some list. The information required to generate this list of values is not part of the JRXML
or Jasper
files.