Scalable Table Component - Generating HTML

I need to have a table that can handle around 2000 rows and 6 columns. If I can have the cells be editable, that is preferred, but currently I have the cells as read-only and a button in each row that opens a row editor window.

I’d like to avoid buffering as this causes some issues for end users where they scroll and it takes too long for the rows the generate, so I set the page length and cache rate to load all of the rows. As you can imagine, this takes a very long time (but the table is fast afterwards).

I read in the Book of Vaadin that:

Setting the page length to zero makes all the rows in a table visible, no matter how many rows there are. Notice that this also effectively disables buffering, as all the entire table is loaded to the browser at once. Using such tables to generate reports does not scale up very well, as there is some inevitable overhead in rendering a table with Ajax. For very large reports, generating HTML directly is a more scalable solution.

Can someone explain what it means to generate the HTML directly and how I’d go about doing that?

Thank you.