Curious about the future of data-driven systems? Join our Data Engineering roundtable and learn how to build scalable data platforms.
Data Engineering: The industry has come a long way from organizing unstructured data to adopting today's modern data pipelines. See how.
Tech Team Lead at Freelancer
A dynamic, innovative programming professional with more than 15 years experience in designing and implementing highly technical, user-friendly enterprise applications using Java and J2EE platform. Proficient in performing business process analysis, analyzing requirements, creating design specifications, unit test plans and production support. Excellent communication skills, creative problem solver, positive listener and team player.
Stats
| Reputation: | 1940 |
| Pageviews: | 384.7K |
| Articles: | 6 |
| Comments: | 9 |
Comments
May 25, 2017 · Grzegorz Ziemoński
"Projects that are supposed to stay small, such as microservices, or larger projects that can be easily factored into smaller pieces."
Really? This contradicts the reality.
Layered Architecture is perfect for big projects. Because is the only one that can be managed efficiently. That is the reason it has been created in the first place.
Nov 28, 2016 · Miro Wengner
I hoped to see some numbers....to compare what framework is faster...Perhaps next time :)
Nov 11, 2016 · Hendrik Ebbers
Using only gradle for my builds for 4 years now.
Never looked back to Maven.
No more XML, thak you.
Oct 15, 2016 · Eugen Hoble
Apache FOP is not a good solution for the case in this article.
Apache FOP does not supports fillable forms and it does not suport drawing of a PDF.
Apache FOP is good for instance if someone wants to show a table inside a report (tabular reports).
With PDFBox one can draw a PDF. That is the reason I've chosen it.
I had to draw each element.
To use Apache FOP for my case would have been very hard . I know FOP due I have to maintain FOP reports in real life. Not fun working with them! In my case most of the templates are more than 1000 lines long ! And they are not very fast ! Which is understandable when you have to parse huge template files.
Each library has a different purpose and there is no silver bullet.
Now if I think more it might be a good idea to write my own library that extends PDFBox and allows the creation of tabular reports. :) It shouldn't be that difficult.
Perhaps it will become so successful that anyone will use it. :)
Hmm....I think I just found my next pet project.
Oct 12, 2016 · Eugen Hoble
Jaspersoft has a free reports designer.
http://community.jaspersoft.com/project/jaspersoft-studio.
I never used it though.
Oct 12, 2016 · Eugen Hoble
In my specific case I had to create PDFs that were fillable by users (AcroForms). Apache FOP does not allow that.
I use both FOP and PDFBox in a legacy project and I personally think that each library is useful for specific cases.
FOP can produce not only PDFs but also ASCI, PS, PCL files..
Regarding the maintenance: with FOP as a developer I have to use Java, XSL templates with fop tags and XML. With FOP I have to know exactly how to properly create templates, those xsl files which are pretty big and somethimes if there is an error that error is not thrown, so debugging is hard.
In my experience anytime I had to combine technologies the result has been harder to maintain in time.
PDFBox is just java . TO create PDFs you just have to know how to "paint". Nothing else. It might need more memory and that's way the article explains how to avoid that issues.
But I think that each of these 2 pdf libraries were created for specific purposes.
Oct 08, 2016 · Eugen Hoble
You are correct Piotr.
From the example in this article, the processInputFile method changes a little bit when using Apache Commons CSV:
FileReader csvDataReader = new FileReader(csvFilename);
CSVParser parser = new CSVParser(csvDataReader, CSVFormat.RFC4180);
List<CSVRecord> recordsList = StreamSupport.stream(parser.spliterator(), false).collect(Collectors.toList());
If the csv file contains a line like this:
"Some text here,separated by a comma","123456","more values here"
we can use forEach to printout the value of every column :
recordsList.stream().forEach(new Consumer<CSVRecord>() {
@Override
public void accept(CSVRecord record) {
System.out.println(record.get(0) + "\n" + record.get(1) + "\n" + record.get(2));
}
});
the output is:
Some text here,separated by a comma
123456
more values here
Oct 06, 2016 · Darel Lasrado
I totally disagree with the 'Bad' and 'Ugly' for the simple reason that is the intended design of all NoSQL DBs.
Oct 04, 2016 · Nikhil Wanpal
I used Guice first time 8 year ago and it felt easier and more manageabla than using Spring.
Spring and its XML configuration can be difficult to read/manage in large projects.
But , of course this is a personal opinion. Some people like to have the configuration outside the application.