String concatenation tweaks

Ali Ebrahimi ali.ebrahimi1781 at gmail.com
Fri Jun 5 13:45:39 UTC 2015


Hi,


On Thu, Jun 4, 2015 at 9:43 PM, Aleksey Shipilev <
aleksey.shipilev at oracle.com> wrote:

> On 06/04/2015 04:59 PM, Ali Ebrahimi wrote:
> > Please add String Interpolation and Multi-line String: in that case we
> > would have better answer for problem.
>
> Neither String interpolation nor multi-line Strings are supported by
> current Java language, so throwing these in mix promotes the issue into
> extending the language. Not fun.
>
I think, I don't say java already support them, but I beleave java should
support them.

>
> In addition, Multi-line Strings is purely a syntax issue, not the
> bytecode interface one, and so it seems rather unrelated.
>
I don't think so.
consider this code:

String chart = "        var chart = new Highcharts.Chart({\n" +
                        "            chart: {\n" +
                        "                zoomType: 'x',\n" +
                        "                height: " + chartHeight + ",\n" +
                        "                width: " + chartWidth + ",\n" +
                        "                type: 'column',\n" +
                        "                plotBackgroundImage: '',\n" +
                        "                renderTo: '" + id + "',\n" +
                "                \tevents: {\n" +
                "                \t\tclick: function(e) {\n" +
                "                \t\t\t//CHARTCLICK_HANDLER_CODE\n" +
                "                \t\t}\n" +
                "                \t}\n" +
                "            },\n";
needs 20 sb.append call

vs multi-line string

  String chart = "        var chart = new Highcharts.Chart({\n
                                    chart: {\n
                                        zoomType: 'x',\n
                                        height: " + chartHeight + ",\n
                                        width: " + chartWidth + ",\n
                                        type: 'column',\n
                                        plotBackgroundImage: ' ',\n
                                        renderTo: '" + id + "',\n
                                \tevents: {\n
                                \t\tclick: function(e) {\n
                                \t\t\t//CHARTCLICK_HANDLER_CODE\n
                                \t\t}\n
                                \t}\n
                                },\n";
6 sb.append call

vs multi-line string & String Interpolation

  String chart = $"        var chart = new Highcharts.Chart({\n
                                    chart: {\n
                                        zoomType: 'x',\n
                                        height: ${chartHeight },\n
                                        width: ${chartWidth },\n
                                        type: 'column',\n
                                        plotBackgroundImage: ' ',\n
                                        renderTo: '${ id }',\n
                                \tevents: {\n
                                \t\tclick: function(e) {\n
                                \t\t\t//CHARTCLICK_HANDLER_CODE\n
                                \t\t}\n
                                \t}\n
                                },\n";
This depend on implementation detail but max 6 sb.append call
I think with multi-line string & String Interpolation javac have better
view of overall string expressions and can generate optimized bytecode.

In other side, we have improved code readability.

-- 

Best Regards,
Ali Ebrahimi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20150605/e6dffd21/attachment.html>


More information about the compiler-dev mailing list